用于java的PHP json解码返回转义的json

时间:2012-08-08 20:09:33

标签: php json

我从java类返回以下json。我可以让它与JS一起工作。但是,当在php中使用json解码时,它显然会中断,因为我确信我需要使用正则表达式才能使其正确解析。有什么想法吗?

{"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}}"}

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分: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