1

我的目标是遍历 JSON 中的每个项目,并为每个“项目”添加一个名为“模态”的附加键,以及与该键配对的包含 html 的值。我在下面剥离了我的代码。

我可以将“模态”添加到每个“项目”,但是该值以某种方式设置为 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,我为这个例子缩短了它并使其无效。

4

2 回答 2

3

您的 JSON 无效。它是一个具有重复键(“Item”)的对象。您应该改用数组:

[
    {
        "thumbnail": "...",
        "title": "..."
    },
    {
        "thumbnail": "...",
        "title": "..."
    }
]

然后您可以对其进行迭代并将“模态”添加到所有元素:

$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);
于 2012-11-18T21:17:04.593 回答
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

    }
}

json_encode主要问题是,如果您使用 PHP 进行生成,则需要正确生成对象或数组

于 2012-11-18T21:17:43.410 回答