解码Json文件结果空白页

时间:2017-12-19 13:21:33

标签: php json

我正在尝试使用php解码JSON文件内容。

"notification": {/* code related to notification */ },
"HOME_SCREEN": 
    {
        "Phone": 
        {
            "position": 1 ,                         
            "list": 
            [
                {
                    "position": 1,
                    "productID": "105"

                }
            ]
        },
    },
"notify": { /* code related to notify */},  

我关注了here&链接here&尝试如下。但它给了空白页....

$string = file_get_contents("test.json");
$json_a = json_decode($string, true);

foreach ($json_a as $Phone => $person_a)
 {
   echo isset($person_a['position']);
 }

也试过:

$json_string = file_get_contents("test.json");
$decoded = json_decode($json_string);
$comments = $decoded->data[0]->comments->data;
foreach($comments as $comment){
   $position = $comment->position;   
   echo $comment['position'];
}   

及以下:

$url = 'http://url.com/test.json';
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach($json as $i){
    echo $i['position'];
}

修改

在线检查Json file,其有效 json,在更好的视图中查看相同的json文件:https://pastebin.com/mUEpqfaM

1 个答案:

答案 0 :(得分:1)

对于JSON文件的解码,您无法做/应该做什么。

正如php documentation for json_decode中所写,您正在使用$assoc = true,因此您将整个JSON文件转换为关联数组。如果要将JSON文件解码为 OBJECT ASSOCIATIVE ARRAY ,则由您决定。直到这一点,你说得对。

为了您的理解,主要区别在于:

  • ARRAY ,您可以使用$json['notification']
  • 访问值
  • OBJECT ,您可以使用$json->notification
  • 访问值

我更喜欢 ARRAY ,因为我更容易导航并使用foreach循环。如评论中所述,您应该检查已解码文件的结构,以便了解如何访问您感兴趣的值。

这样做的最小代码是

$string = file_get_contents("test.json");
$json = json_decode($string, true);

echo "<pre>";
  print_r($json);
echo "</pre>";

假设您要访问 $ json 数组中 HOME_SCREEN / Phone&gt;的位置列表,为此,您需要使用此foreach循环:

foreach ($json['HOME_SCREEN']['Phone']['list'] as $item) {
  echo $item['position'];
}