1

PHPで配列を正しく解析するのに苦労しています。配列の出力は次のとおりです。

[{"address":"2801 Elliott Ave","category_ids":[347],"category_labels":[["Social","Food and 
Dining","Restaurants"]],"country":"us","email":"kimd@thedussingroup.com","factual_id":"43cfe23
8-ae8e-469a-8592-a1edc8603051","fax":"(206) 448-
9252","latitude":47.615154,"locality":"Seattle","longitude":-122.353724,"name":"The Old 
Spaghetti Factory","neighborhood":["Belltown","Downtown","Downtown 
Seattle"],"postcode":"98121","region":"WA","tel":"(206) 441-
7724","website":"http:\/\/www.osf.com"}]

そして、これが解析の試みです...

$mark = array("[");
$mark2 = array("]");
$replacemark  = array("");
$array = str_replace($mark, $replacemark, $array);
$array = str_replace($mark2, $replacemark, $array);
$array = stripslashes($array);

$obj = json_decode($array);

$address = $obj->{'address'};
$country = $obj->{'country'};
$factual_id = $obj->{'factual_id'};
$latitude = $obj->{'latitude'};
$locality = $obj->{'locality'};
$longitude = $obj->{'longitude'};
$name = $obj->{'name'};
$postcode = $obj->{'postcode'};
$region = $obj->{'region'};
$status = $obj->{'status'};
$tel = $obj->{'tel'};

これらの値が何も返さない理由はありますか? ありがとう!

4

2 に答える 2

1

角かっこを削除する必要はありません。データを呼び出しjson_decode()て情報を取得するだけです。

注:あなたが持っている形式のデータは、1つのオブジェクトだけでオブジェクトの配列にデコードされるため、配列の添え字を提供する必要があります:

$json = json_decode("My JSON Data...here");
echo $json[0]->address;

このフィドルを参照してください

2番目の注意:あなたが投稿したデータには改行が埋め込まれており、json_decode(). 元のデータにそれらがある場合は、デコードする前にそれらを取り除く必要があります。私はフィドルでそれらを編集しました。

于 2013-10-22T01:39:07.737 に答える
0

JSON 文字列の角かっこを削除する必要はありません。次のように値にアクセスしてみてください。$obj->address

編集:

その JSON 文字列は、インデックス 0 のオブジェクトを含む配列を返します。自分でテストしたので、値にアクセスするには、次のことを行う必要があります。$obj[0]->addressまたは、オブジェクト$obj = $de_json[0];を設定して、上で述べたように値にアクセスします。

于 2013-10-22T01:30:57.350 に答える