0

我有以下从 java 类返回的 json。我可以让它与 JS 一起工作。但是,当在 php 中使用 json decode 时,它​​显然会中断,因为我确信我需要使用 regexp 来使其正确解析。有任何想法吗?

{"return":"{\"response\": {\n \"header\": {\"status\": \"SUCCESS\"},\n \"table\":   {\"rows\": {\"row\": {\"category\": [ {\n \"id\": 1,\n \"name\": \"myApp\",\n \"fa\": [\n {\n \"id\": \"370\",\n \"FieldsAllowed\": \"true\",\n \"systemType\": \"CRM GT\",\n \"cachable\": \"false\",\n \"description\": \"Display Activities\",\n \"faId\": \"100000044\",\n  }]}}}\n}}"}
4

2 回答 2

0

应用json_decode()两次以获取包含的数组(“响应”)。

 // This gets you the inner string
 $json = json_decode($input);

 // This unfolds the contained structure
 $data = json_decode($data->return);

就像数据被编组两次时在所有情况下所做的一样。

于 2012-08-08T20:38:49.447 回答
0

您可以将数据作为关联数组或对象获取,

$jsonString = '{"return":"{\"response\": {\n \"header\": {\"status\": \"SUCCESS\"},\n \"table\":   {\"rows\": {\"row\": {\"category\": [ {\n \"id\": 1,\n \"name\": \"myApp\",\n \"fa\": [\n {\n \"id\": \"370\",\n \"FieldsAllowed\": \"true\",\n \"systemType\": \"CRM GT\",\n \"cachable\": \"false\",\n \"description\": \"Display Activities\",\n \"faId\": \"100000044\",\n  }]}}}\n}}"}';

1) 以关联数组的形式获取响应,

$decodedResultsAsArray = json_decode($jsonString,true);
$data = $decodedResultsAsArray['return'];
print_r($data);

2) 将响应作为对象获取,

$decodedResultsAsObject = json_decode($jsonString);
$data = $decodedResultsAsObject->return;
print_r($data);

如果您想查看 json_decode 函数还有其他几个选项,http: //php.net/json_decode

于 2013-12-23T00:16:23.997 回答