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サービスが返す各アイテムに対して、可能な属性ごとに1つずつ、複数の正規表現を実行する必要がありますか?

4

2 に答える 2

5

json_decode() を使用して、すべてのアイテムに簡単にアクセスできるはずです

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

出力: 配列 ([ID] => 2958 [ラベル] => Reprise Records [名前] => Electric Ladyland [年] => 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 に答える