php中json_decode的错误

时间:2014-10-21 23:21:38

标签: php json

我们有json:

{ "list":
       [
        {"id":"4045","value":"Xin Kai"},
        {"id":"4141","value":"YZK"},
        {"id":"4099","value":"ZX"}
       ]
}

对于获取值,我们使用下一个代码:

$json = json_decode($result, true);
foreach($json['list'] as $item) {
    print $item['value'].'<br />';

}

但现在我们收到错误:Warning: Invalid argument supplied for foreach()...

请告诉我代码中的错误以及如何正确?

2 个答案:

答案 0 :(得分:1)

您的问题是您在代码中执行此操作:

foreach($json->list as $item) {

当你应该这样做时:

foreach($json['list'] as $item) {

当您将其解释为arrayobject时。

阅读更多:json_decode()

另外,正如zerkms所说,

>>> windows-1251 <<< JSON document must be in UTF-8

答案 1 :(得分:0)

json_decode之前你需要在utf-8中获取json,在你的例子中(如果你在windows-1251中获得json),你需要使用下一个代码:

示例第一 - 如果你想得到数组

//if you want get array
$json_obj = json_decode(iconv("windows-1251","utf-8",$result), true);
foreach($json_obj['list'] as $item) {
    print $item['value'].'<br />';   
}

第二个例子 - 如果你得到对象

//if you wnt get object
$json_obj = json_decode(iconv("windows-1251","utf-8",$result));
foreach($json_obj->list as $item) {
    print $item->value.'<br />';   
}

享受!