我从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}}"}
答案 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