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()数据并检索您的信息。

注意:您拥有的表单中的数据将解码为一个对象数组,只有一个对象,因此您需要提供一个数组下标:

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

看到这个小提琴

第二个注意事项:您发布的数据已嵌入换行符,导致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 回答