2

我目前正在使用以以下格式输出 JSON 数据的 Web 服务:

{"ID":1291,"Name":"Houses of the Holy","Artist":"Led Zeppelin","Year":1973}

但是,从一个项目到下一个项目的顺序并不一致。例如:

{"ID":2958,"Label":"Reprise Records","Name":"Electric Ladyland","Year":1968}

自然,我不能编写依赖于统一顺序的属性的正则表达式,因为顺序从一个项目到下一个项目不同(尽管它们总是以 ID 开头)。

我会使用 preg_split 使用 ',"' 作为分隔符,但偶尔会有一个跟踪列表,如下所示:

{"ID":9237,"Tracklist":[{"Track1":"Taxman","Track2":"Eleanor Rigby"}]}

......这会搞砸的。

如何使用正则表达式搜索可能以任何顺序出现或根本不出现的子字符串?或者我是否必须对 Web 服务返回的每个项目运行多个正则表达式,每个可能的属性一个?

4

2 回答 2

5

使用 json_decode() 应该很容易访问每个项目

$results = json_decode('{"ID":2958,"Label":"Reprise Records","Name":"Electric Ladyland","Year":1968}', true);
print_r($results);

输出:Array([ID] => 2958 [Label] => Reprise Records [Name] => Electric Ladyland [Year] => 1968)

于 2013-03-23T13:23:37.457 回答
0

我想知道你为什么不想使用 json_decode()

$json_string = '{"ID":1291,"Name":"Houses of the Holy","Artist":"Led Zeppelin","Year":1973}';
 $json_array =json_decode($json_string,true);

输出将是

Array
(
[ID] => 1291
[Name] => Houses of the Holy
[Artist] => Led Zeppelin
[Year] => 1973
)

然后,您可以按照您想要的方式操作数组

于 2013-03-23T13:24:17.347 回答