我目前正在使用以下列格式输出JSON数据的网络服务:
{"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服务返回的每个项目上运行多个正则表达式,每个项目对应一个可能的属性?
答案 0 :(得分:5)
使用json_decode()
访问每个项目应该很容易$results = json_decode('{"ID":2958,"Label":"Reprise Records","Name":"Electric Ladyland","Year":1968}', true);
print_r($results);
输出: 排列 ( [ID] => 2958 [标签] => Reprise Records [姓名] =>电动Ladyland [年] => 1968年 )
答案 1 :(得分: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
)
然后,您可以按照自己想要的方式操作数组