2013-08-30 42 views
1

我有一個包含多個對象的JSON數組,並試圖使用json_decode來創建關聯數組。多對象數組中的json_decode

的樣本數據

$json='[{ 
     type: "cool", 
     category: "power", 
     name: "Robert Downey Jr.", 
     character: "Tony Stark/Iron Man", 
     bio: "cool kid" 
    }, 
     { 
     type: "cool", 
     category: "power", 
     name: "Chris Hemsworth", 
     character: "Thor", 
     bio: "cool kid" 
    }, 
    { 
     type: "NotCool", 
     category: "nothing", 
     name: "Alexis Denisof", 
     character: "The Other", 
     bio: "cool kid" 
    }]'; 

下面是我在做什麼:

$data = json_decode($json, true); 

,給了我一個NULL結果。我究竟做錯了什麼?

(我是新來的PHP。)

+0

我相信你需要周圍的屬性名稱報價,以及 –

+2

這不是有效的JSON。對象中的鍵需要用雙引號(''')引用,如:'{「type」:「NotCool」,...}'。 –

+2

這是無效的JSON。它是一個有效的JS對象初始化,但對於JSON,這些鍵必須用'''括起來(參見[http://json.org/](http://json.org/))。 – Sirko

回答

0

創建驗證的Json試試這個

<?php 
$json='[ 
    { 
     "type": "cool", 
     "category": "power", 
     "name": "Robert Downey Jr.", 
     "character": "Tony Stark/Iron Man", 
     "bio": "cool kid" 
    }, 
    { 
     "type": "cool", 
     "category": "power", 
     "name": "Chris Hemsworth", 
     "character": "Thor", 
     "bio": "cool kid" 
    }, 
    { 
     "type": "NotCool", 
     "category": "nothing", 
     "name": "Alexis Denisof", 
     "character": "The Other", 
     "bio": "cool kid" 
    } 
]'; 
$data = json_decode($json, true); 
echo "<pre>" ; 
print_r($data); 
?> 
+0

非常感謝你,Nathan。這非常有幫助。 –

2

你的JSON字符串無效:密鑰需要被引用爲好。使用JSONlint網站檢查JSON有效性。

+2

的確如此,但你應該檢查一下Mchl:http://www.youtube.com/watch?v = 13FV1GaA20I –

+1

大聲笑。我可能已經開始寫點別的東西了,然後改變了主意。我不是英語本地人,所以我很少混淆你和你; – Mchl

1

這是無效的JSON。對象中的鍵需要用雙引號引用(")。

它應該是:

$json='[{ 
    "type": "cool", 
    "category": "power", 
    "name": "Robert Downey Jr.", 
    "character": "Tony Stark/Iron Man", 
    "bio": "cool kid" 
}, 
{ 
    "type": "cool", 
    "category": "power", 
    "name": "Chris Hemsworth", 
    "character": "Thor", 
    "bio": "cool kid" 
}, 
{ 
    "type": "NotCool", 
    "category": "nothing", 
    "name": "Alexis Denisof", 
    "character": "The Other", 
    "bio": "cool kid" 
}]'; 
1

你需要周圍的屬性名稱雙引號所以它應該是

JSON

[{ 
    "type" : "cool", 
    "category" : "power", 
    "name" : "Robert Downey Jr.", 
    "character" : "Tony Stark/Iron Man", 
    "bio" : "cool kid" 
}] 

只是嘗試

PHP

echo json_encode(array("name" => "Tony Stark")); 

,你會看到有效的JSON