问:非法字符串偏移JSON - > PHP

时间:2015-05-28 12:53:40

标签: php json

我已经在stackoverflow中查看了很多关于我的问题的问题,但我没有找到任何解决方案。我不知道我的代码中的问题在哪里?我在这一行收到了非法的字符串偏移消息:

echo $value["country"] . ", " . $value["competition"] . "<br>";

我的完整代码:

<?php

// file_get_contents call instead
$str = file_get_contents('general.json');

$json = json_decode($str,true);

 foreach($json as $key => $value){

echo $value["country"] . ", " . $value["competition"] . "<br>";

}
?>

我的json源代码示例:

["{\"country\":\"America\",\"competition\":\"Copa America\",\"club\":\"BOCA JUNIORS\"}","{\"country\":\"Germany\",\"competition\":\"Bundesliga\",\"club\":\"HANNOVER\"}","{\"country\":\"Asia\",\"competition\":\"JLeague\",\"club\":\"NAGOYA\"}"]

如果我用var_dump($ json)查看数据的格式,那么我看到它是一个数组。使用var_dump($ value)然后我看到有一个字符串。请帮助我,我的代码中的问题在哪里,为什么不能回应价值国家和价值竞争?

1 个答案:

答案 0 :(得分:2)

问题是你有两次编码的json,数组和数组中的元素。

您应该避免这样做,但如果您无法更改源,您还需要解码这些值:

<?php
// file_get_contents call instead
$str = file_get_contents('general.json');

$json = json_decode($str,true);

foreach($json as $key => $value){
    // decode the $value string
    $value = json_decode($value, true);

    echo $value["country"] . ", " . $value["competition"] . "<br>";

}
?>

An example

相关问题