2013-07-28 168 views
1

我試圖發現什麼PHP數組可以讓你這個JSON用方括號PHP數組轉換JSON

{ 
    "sEcho": 67, 
    "iTotalRecords": "4075", 
    "iTotalDisplayRecords": "4075", 
    "aaData": [ 
    [ 
     "215", 
     "Manaus", 
     "BRA", 
     "Amazonas", 
     "1255049" 
    ], 
    [ 
     "216", 
     "Belém", 
     "BRA", 
     "Pará", 
     "1186926" 
    ], 
    [ 
     "217", 
     "Guarulhos", 
     "BRA", 
     "São Paulo", 
     "1095874" 
    ], 
    [ 
     "218", 
     "Goiânia", 
     "BRA", 
     "Goiás", 
     "1056330" 
    ], 
    [ 
     "219", 
     "Campinas", 
     "BRA", 
     "São Paulo", 
     "950043" 
    ], 
    [ 
     "220", 
     "São Gonçalo", 
     "BRA", 
     "Rio de Janeiro", 
     "869254" 
    ], 
    [ 
     "221", 
     "Nova Iguaçu", 
     "BRA", 
     "Rio de Janeiro", 
     "862225" 
    ], 
    [ 
     "222", 
     "São Luís", 
     "BRA", 
     "Maranhão", 
     "837588" 
    ], 
    [ 
     "223", 
     "Maceió", 
     "BRA", 
     "Alagoas", 
     "786288" 
    ], 
    [ 
     "224", 
     "Duque de Caxias", 
     "BRA", 
     "Rio de Janeiro", 
     "746758" 
    ] 
    ] 
} 

我想這

$array = array(
    "foo" => "more foo", 
    "st" => "bar", 
    "ty" => "stuff", 
    "multi" => array(
      "array" => "foo", 
      "the" => "stuff" 
     ), 
     array(array(
      "array" => "foo", 
      "the" => "stuff" 
     )), 
     array(array(
      "array" => "foo", 
      "the" => "stuff" 
     )), 
     array(array(
      "array" => "foo", 
      "the" => "stuff" 
     )) 
    ); 
echo "<pre>"; 
print_r(json_encode($array)); 
echo "</pre>"; 

,但我的JSON有一個大括號

{「foo」:「更多 foo」,「st」:「bar」,「ty」:「stuff」,「multi」:{「array」:「foo」,「the」stuff 「},」 0 「:[{」 陣列 「:」 foo 「的, 」該「: 」東西「}]中, 」1「:[{」 ARR ay「:」foo「,」the「:」stuff「}],」2「:[{」array「:」foo「,」the「:」stuff「}]}

糾正我的數組產生JSON ?.

回答

3

你有深入的太多的數組,你不應該指定密鑰。在PHP數組中,如果您設置了字符串鍵並使用JSON對其進行編碼,則它將生成一個不是數組的對象。

$array = array(
    "foo" => "more foo", 
    "st" => "bar", 
    "ty" => "stuff", 
    "multi" => array(
     array(
      '215', 
      'Manaus', 
      'BRA' 
     ), 
     array(
      '216', 
      'Belém', 
      'BRA' 
     ), 
     array(
      '217', 
      'Guarulhos', 
      'BRA' 
     ) 
    ) 
); 

echo json_encode($array); 

輸出:

{ 
    "foo": "more foo", 
    "st": "bar", 
    "ty": "stuff", 
    "multi": [ 
     [ 
      "215", 
      "Manaus", 
      "BRA" 
     ], 
     [ 
      "216", 
      "Belém", 
      "BRA" 
     ], 
     [ 
      "217", 
      "Guarulhos", 
      "BRA" 
     ] 
    ] 
} 
2

使用數字指標!任何以字符串作爲關鍵字的東西都必須生成大括號,因爲這是在javascript中使用這些關鍵字的唯一方法。

json_encode(array("hello", "world") 

["hello", "world"] 
0

由於您指定了鍵和值,因此您使用大括號,因此您只需指定值。

$array = array(
    "foo" => "more foo", 
    "st" => "bar", 
    "ty" => "stuff", 
    "multi" => array(
       "foo", 
      "stuff" 
     ), 
     array(array(
       "foo", 
      "stuff" 
     )), 
     array(array(
      "foo", 
      "stuff" 
     )), 
     array(array(
       "foo", 
      "stuff" 
     )) 
    ); 
1

JSON數組索引必須是數字。 任何非數字索引都將被轉換爲json對象。 這就是爲什麼它被渲染成大括號。

關於你的第一個問題,下面的PHP代碼: header(「Content-type:application/json」); header(「Access-Control-Allow-Origin」,「*」); header(「Access-Control-Allow-Methods:POST,OPTIONS」); header(「Access-Control-Allow-Headers:Content-Type」); header(「Access-Control-Allow-Credentials:false」); header(「Access-Control-Max-Age:60」);

include "./inc/funclib.inc.php"; 
$array = array (
    "sEcho" => 67, 
    "iTotalRecords" => "4075", 
    "iTotalDisplayRecords" => "4075", 
    "aaData" => array (
     array ("215", "Manaus", "BRA", "Amazonas", "1255049"), 
     array ("216", "Belem", "BRA", "Para¡", "1186926"), 
     array ("217", "Guarulhos", "BRA", "Sao Paulo", "1095874") 
    )); 

echo jsonIndent(json_encode($array)); 

返回該輸出:

{ 
    "sEcho":67, 
    "iTotalRecords":"4075", 
    "iTotalDisplayRecords":"4075", 
    "aaData":[ 
    [ 
     "215", 
     "Manaus", 
     "BRA", 
     "Amazonas", 
     "1255049" 
    ], 
    [ 
     "216", 
     "Belem", 
     "BRA", 
     "Para\u00a1", 
     "1186926" 
    ], 
    [ 
     "217", 
     "Guarulhos", 
     "BRA", 
     "Sao Paulo", 
     "1095874" 
    ] 
    ] 
} 

,它看起來像你在找什麼。我希望這會有所幫助:-)