2014-01-28 96 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;