使用PHP将JSON存储为JSON中的字符串

时间:2017-03-08 13:48:16

标签: php jquery json ajax

出于测试目的,我希望使用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}\""}]

1 个答案:

答案 0 :(得分:5)

您是否尝试从'jsonstring'=>'"'.$json.'"'删除多余的引号?如果你json_encode它(看起来像你),那么它已经是一个字符串。我认为它应该是'jsonstring' => $json