出于测试目的,我希望使用Ajax从服务器请求一些JSON。从Ajax客户端的角度来看,JSON应该如下所示:
json=[
{"source":"pa","jsonstring": '{"a":1,"b":2,"c":3}'},
{"source":"pa","jsonstring": '{"a":1,"b":2,"c":3}'},
{"source":"pa","jsonstring": '{"a":1,"b":2,"c":3}'}
];
请注意,jsonstring
不是JSON,而是字符串,而$.getJSON()
不应将其解析为对象。
我的尝试如下,但我收到错误Parse error: syntax error, unexpected ',' in /var/www/test/src/classes/Ajax.php on line 13
。
应该如何执行?
$content=file_get_contents('../buffer.json',true); //Line 13
$buffer=$content?json_decode($content):[];
$json=json_encode(['a'=>1,'b'=>2,'c'=>3]);
$buffer[]=[
'source'=>'pa',
'jsonstring'=>'"'.$json.'"'
];
$buffer=json_encode($buffer);
file_put_contents('../buffer.json',$buffer);
header('Content-Type: application/json');
echo($buffer);
buffer.json
输出如下所示:
[{"source":"pa","jsonstring":"\"{\"a\":1,\"b\":2,\"c\":3}\""},{"source":"pa","jsonstring":"\"{\"a\":1,\"b\":2,\"c\":3}\""}]
答案 0 :(得分:5)
您是否尝试从'jsonstring'=>'"'.$json.'"'
删除多余的引号?如果你json_encode它(看起来像你),那么它已经是一个字符串。我认为它应该是'jsonstring' => $json
。