我的目标是循环遍历JSON中的每个Item,并为每个“Item”添加一个名为“modal”的附加键,并将该值与包含html的键配对。我在下面删除了我的代码。
我能够为每个'Item'添加'modal',但是以某种方式将值设置为null,而不是我想要的html。
JSON文件:
{"Item":{
"thumbnail":"http://...",
"title": "Item title"
},
"Item":{
"thumbnail":"http://...",
"title": "Item title"
}}
PHP:
$json_a=json_decode($json, true);
foreach ($json_a['Item'] as &$obj){
$out = '<img src=\"' . $obj['thumbnail'] . '\">';
$out .= '<span>' . $obj['title'] . '</span>';
$obj['modal'] = $out; //value of $out doesn't get passed in, instead the value becomes null.
}
$json_a=json_encode($json_a);
print_r($json_a);
json输出:
...{'modal': null}...
编辑JSON有效。它来自亚马逊的产品API,我为此示例缩短了它并使其无效。
答案 0 :(得分:3)
您的JSON无效。它是具有重复键的对象(“Item”)。您应该使用数组:
[
{
"thumbnail": "...",
"title": "..."
},
{
"thumbnail": "...",
"title": "..."
}
]
然后你可以迭代它并为所有元素添加'modal':
$json_a = json_decode($json, true);
foreach ($json_a as &$obj) {
$out = '<img src=\"' . $obj['thumbnail'] . '\">';
$out .= '<span>' . $obj['title'] . '</span>';
$obj['modal'] = $out;
}
$json_a = json_encode($json_a);
print_r($json_a);
答案 1 :(得分:1)
简单的json
无效
{
"Item": {
"thumbnail": "http://...",
"title": "Item title",
^---- This should not be here
},
"Item": {
^-------------- Duplicate name
"thumbnail": "http://...",
"title": "Item title",
^---- This should not be here
}
}
主要问题是,如果您使用PHP进行生成,则需要使用json_encode
正确生成对象或数组