2014-01-28 70 views
1

我正在使用需要JSON格式化特定方式的API。为简化显示目的。来自PHP的JSON数组需要添加方括号

我需要知道如何做到这一点通过PHP,我目前使用一堆嵌套array()的,然后在该数组值使用json_encode()

json_encode($data);

JSON格式

这是发生

{ 
"value1": "1", 
"value2": "2", 
"value3": "3", 
"value4": 
    { 
     "value4a": 
      { 
       "value4aa": "1", 
       "value4ab": { 
        "value4aba": { 
         "value4abaa": "1", 
         "value4abab": "2", 
         "value4abac": "3", 
         "value4abad": "4" 
        } 
       } 
      } 
     , 
     "value4b": { 
      "value4ba": "1", 
      "value4bb": "2", 
      "value4bc": "3" 
     } 
    } 
} 

这里就是我想

{ 
"value1": "1", 
"value2": "2", 
"value3": "3", 
"value4": [ 
    { 
     "value4a": [ 
      { 
       "value4aa": "1", 
       "value4ab": { 
        "value4aba": [ 
         { 
          "value4abaa": "1", 
          "value4abab": "2", 
          "value4abac": "3", 
          "value4abad": "4" 
         } 
        ] 
       } 
      } 
     ], 
     "value4b": { 
      "value4ba": "1", 
      "value4bb": "2", 
      "value4bc": "3" 
     } 
    } 
] 
} 

无处不在,我在网上看了我看到方括号默认回来了,但只有我需要他们在特定的阵列。我不确定如何提出这个问题,所以我提前为缺乏信息或可能的愚蠢问题而道歉。

+3

你确定你的结果是由所有的'{'和'}'括号吗?当我这样做的时候(http://ideone.com/npg3AI),我得到'[[[{“test1”:“1”,“test2”:“2”}]]]' – crush

+2

您发布的JSON字符串是有效的JSON。你的PHP *真正创建的是'[[[{“test1”:“1”,“test2”:“2”}]]]'。这究竟是什么问题? –

+0

您不能在对象内部嵌入对象,而无需为其定义属性名称。例如,您必须这样做:'{“obj”:{“children”:[{“children”:[{“test1”:“1”,“test2”:“2”}]}]}} ' – crush

回答

0

我用json_decode来看看PHP需要建立你的json。 这就是我得到:

stdClass Object 
(
    [value1] => 1 
    [value2] => 2 
    [value3] => 3 
    [value4] => Array 
     (
      [0] => stdClass Object 
       (
        [value4a] => Array 
         (
          [0] => stdClass Object 
           (
            [value4aa] => 1 
            [value4ab] => stdClass Object 
             (
              [value4aba] => Array 
               (
                [0] => stdClass Object 
                 (
                  [value4abaa] => 1 
                  [value4abab] => 2 
                  [value4abac] => 3 
                  [value4abad] => 4 
                 ) 

               ) 

             ) 

           ) 

         ) 

        [value4b] => stdClass Object 
         (
          [value4ba] => 1 
          [value4bb] => 2 
          [value4bc] => 3 
         ) 

       ) 

     ) 

) 

而这个北京时间的代码来构建你的JSON: (与http://writecodeonline.com/php/测试)

$o = new stdClass(); 
$o->value1 = "1"; 
$o->value2 = "2"; 
$o->value3 = "3"; 
$o->value4 = array(); 
$o->value4[0] = new stdClass(); 
$o->value4[0]->value4a = array(); 
$o->value4[0]->value4a[0] = new stdClass(); 
$o->value4[0]->value4a[0]->value4aa = "1"; 
$o->value4[0]->value4a[0]->value4ab = new stdClass(); 
$o->value4[0]->value4a[0]->value4ab->value4aba = array(); 
$o->value4[0]->value4a[0]->value4ab->value4aba[0] = new stdClass(); 
$o->value4[0]->value4a[0]->value4ab->value4aba[0]->value4abaa = "1"; 
$o->value4[0]->value4a[0]->value4ab->value4aba[0]->value4abab = "2"; 
$o->value4[0]->value4a[0]->value4ab->value4aba[0]->value4abac = "3"; 
$o->value4[0]->value4a[0]->value4ab->value4aba[0]->value4abad = "4"; 
$o->value4[0]->value4b = new stdClass(); 
$o->value4[0]->value4b->value4ba = "1"; 
$o->value4[0]->value4b->value4bb = "2"; 
$o->value4[0]->value4b->value4bc = "3"; 

$json = json_encode($o); 

,使其更有活力,在for循环中,例如,你可以这样使用它:

$num = "1"; 
$o->{"value$num"} = $num;