2

使用下面这个作为 JSON 响应的示例,我将从使用 PHP 的 API 获得

[
   {
    "profile_background_tile": true,
    "listed_count": 82,
    "status":  {
      "created_at": "Fri Apr 20 20:06:12 +0000 2012",
      "place": null,
    },
    "default_profile": false,
    "created_at": "Tue Oct 25 00:03:17 +0000 2011"
  }
]

我会用这样的东西......

$obj = json_decode($json);

foreach($obj as $index => $user) {
    echo $user->profile_background_tile;
    echo $user->listed_count;
    echo $user->status;    
    echo $user->default_profile;
    echo $user->created_at;
}

现在我需要一些帮助的地方是在下面的 JSON 响应status中,created_at并且place

我不知道如何访问那些项目?

4

2 回答 2

1

您使用完全相同的逻辑,但更深一层:

echo $user->status->created_at;
echo $user->status->place;

这就是为什么有效:您解码的 JSON 是对象数组。每个对象都有类似的属性 profile_background_tile。它们还有一个status属性,恰好是另一个对象,具有属性created_atplace. $obj->prop您可以使用语法访问对象属性。

于 2012-04-20T21:39:06.520 回答
1

错误

JSON的无效...

看着

"status":  {
  "created_at": "Fri Apr 20 20:06:12 0000 2012",
  "place": null,
},

,之后"place": null 不应该有

尝试

$json = '[{"profile_background_tile": "true",
    "listed_count": 82,
    "status":  {
      "created_at": "Fri Apr 20 20:06:12 0000 2012",
      "place": null
    },
    "default_profile": false,
    "created_at": "Tue Oct 25 00:03:17 +0000 2011"
  }]';

echo "<pre>";
$obj = json_decode ( $json );
foreach ( $obj as $index => $user ) {
    echo $user->status->created_at , PHP_EOL;
    echo $user->status->place , PHP_EOL;

}

输出

 Fri Apr 20 20:06:12 0000 2012
于 2012-04-20T21:50:02.970 回答