您的JSON是数组的混合 的 和对象 强> 。因此数组表示法不适用于所有项目。 例如,要找到品牌使用:
foreach ($json->items as $item) { var_dump($item->product->brand); }
键盘示例 JSON规范
$json = '{ "a1":{ "field1":"name1", "field2":age1, "field3":"country1" }, "a2":{ "field1":"name2", "field2":age2, "field3":"country2" }, "a3":{ "field1":"name3", "field2":age3, "field3":"country3" } }'; $Array = json_decode($json, true); foreach ($Array as $key => $value) { echo " $key "; foreach ($value as $k => $val) { echo "$k | $val <br />"; } }
这不是JSON问题。你只需要遍历数组。一个简单的 print_r($json); 会告诉你结构。
print_r($json);
在您的情况下,您可能需要:
foreach ($json["items"] as $item) { foreach ($item["product"] as $key => $value) { echo $key . " : " . $value; } }
第一个foreach循环遍历项目列表。并且第二个子阵列访问 ["product"] 将使您达到所需的属性。
["product"]
您可以使用 这个json解析器 以适当的格式查看您的内容。
您可以使用此代码:
$json = json_decode($url,true); //you can retrieve kind, tag, id by using $kind = $json['kind']; $id = $json['id'];
在这里,项目本身将有一个可以使用它的数组
$items[] = $json['items']; // you can retrieve the data inside the kind array $kind_arr = $json['items'][0][]['kind']; //similarly you can parse all the data
如果我是你,我会将JSON解析为数组而不是对象。这可以通过执行以下操作来完成:
$json = json_decode($data, true);
通过在json_decode中包含值为true的第二个参数,您将返回一个数组。然后你可以这样做:
echo '<pre>'; print_r($json); exit;
这将使您了解数据的数组结构以及如何访问所需的信息。例如,要提取每个项目的标题,品牌和描述,您需要执行以下操作:
foreach($json['items'] as $item) { echo 'Title: ' . $item['product']['title'] . '<br />'; echo 'Brand: ' . $item['product']['brand'] . '<br />'; echo 'Description: ' . $item['product']['description'] . '<br />'; }
为了获得可用性,再次使用print_r()进行数组转储,并找出从数组中访问它的最佳方法。
我们可以解析 的 JSON数组 强> 像这样,
<?php $json = "[{\"name\":\"user1\",\"id\":\"940\"},{\"name\":\"user2\",\"id\":\"949\"}]"; $dec = json_decode($json); for($idx = 0; $idx < count($dec); $idx++){ $obj = (Array)$dec[$idx]; echo $obj["name"]; } ?>
和类似的 的 JSON对象 强> 像这样,
<?php $json = "{\"name\":\"user1\",\"id\":\"940\"}"; $dec = (Array)json_decode($json); echo $dec["name"]; ?>