1

在 PHP 中弄清楚了如何使用 {name-with-reserved-chars} 表示法在 JSON 解码后访问对象数据,但我在路径中也有索引值(如 [0])。尽管我尝试改变模式,但我尝试添加索引值并没有返回任何结果。这是一个基于大型 JSON 对象的示例:

["ops:world-patent-data"]["exchange-documents"]["exchange-document"]
[0]["bibliographic-data"]["publication-reference"]["document-id"][0].date.$

我的尝试一无所获:

print $result->{'ops:world-patent-data'}->{'exchange-documents'}->{'exchange-document'}->
      {0}->{'bibliographic-data'}->{'publication-reference'}->{'document-id'}->{0}->date;

想知道如何在路径中放置 0 和 1 索引...

4

1 回答 1

3

当反序列化一个实际的 JSON列表(即,不是一个对象,而是一个具有数字索引的实际数组;类似[1,2,3,...]or [{...},{...},...])时,PHP 的parse_json函数会构建一个具有数字索引的相应 PHP 数组(另一方面,它将 JSON对象映射到stdClass类——除非你使用函数的参数$assocparse_json

因此,因为您访问的是数组而不是对象,所以您的代码可能必须如下所示:

print $result->{'ops:world-patent-data'}->{'exchange-documents'}->
    {'exchange-document'}[0]->{'bibliographic-data'}->{'publication-reference'}->
    {'document-id'}[0]->date;

使用该$assoc参数可能会更容易,强制json_decode将整个 JSON 对象映射到关联数组,还允许您使用方括号表示法进行对象访问。

于 2013-02-03T22:31:15.407 回答