[英]json_encode(); function in php
我試圖使用json_encode($ loc);之后獲得預期的json格式; 在PHP中。
$loc['location1'] = Array(
"city" =>"test",
"addr" => Array
(
"addr1"=> "test",
"addr2"=> "test"
),
);
預期的json:
"location1": {
"city": "test",
"addr": {
"addr1": "test",
"addr2": "test"
}
}
代替:
"0": {
"location1": {
"city": "test",
"addr": {
"addr1": "test",
"addr2": "test"
}
}
},
請指教,謝謝。
首先,如Leggendario所說,您期望的代碼不是有效的json。 要獲取有效的json,它必須是一個值(如果不是數字則加引號),一個對象或一個數組。
其次,要根據您的代碼獲得與您的期望相似的東西,您可以這樣做:
$loc = array(
"location1" => array(
"city" => "test",
"addr" => array(
"addr1"=> "test",
"addr2"=> "test"
),
)
);
然后致電:
json_encode($loc);
將輸出:
{
"location1": {
"city": "test",
"addr": {
"addr1": "test",
"addr2": "test"
}
}
}
您可以在http://jsonlint.com/中檢查json輸出
因此,基本上與眾不同的是您將參數作為參數傳遞給json_encode()
。
stdClass和數組之間有區別。 PHP中的stdClass是通用的空類。 在javascript中,這被定義為...
var obj = {};
數組是從數字索引0開始的值的索引。在javascript中,這定義為...
var array = [];
在javascript中,您不能以精確的方式擁有關聯數組,而可以在PHP中定義它們。 因此,如果在PHP中使用關聯數組並使用json編碼,則關聯鍵的索引將為0。
$loc['location1'] in PHP becomes 0:[{'location'} etc...
解決方案是將其移至stdClass。 最簡單的方法是將數組替換為stdClass,然后使用(object)將數組轉換為對象。
<?php
$loc = new stdClass;
$loc->location = (object) Array(
"city" =>"test",
"addr" => (object) Array
(
"addr1"=> "test",
"addr2"=> "test"
),
);
?>
這應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.