PHP-> Javascript将json对象保存并提取为json中的字符串

时间:2018-12-02 17:17:58

标签: javascript jquery json

我正在尝试将编码为json的字符串保存到另一个json字符串中。特别是,我必须能够处理空对象:“ {}”。

PHP:

$sVal = "{}";
$jsonString  = "{\"Var2\":\"My first var\", \"Var2\":\"My second var\", \"MyBlankObject\":\"{}\"}"

...

Javascript:

var oMyJSON = JSON.parse('< ?= $jsonString;? >');

我收到JSON解析错误,说发现了意外的{

我可以在Chrome的调试器中看到代码。

只需删除括号,然后在客户端(javascript)代码中,将对象替换为单词null。那不是有效的JSON。

,"Properties":null,

这会导致javascript崩溃。

如果我尝试在服务器端(PHP)上对其进行json_encode编码,则会在方括号的两边得到双引号。

,"Properties":""{}"",

如果我只添加双引号,则会得到相同的结果:“ \” {} \“”

当然,这也会导致javascript崩溃。

一旦在客户端中并且我的JSON对象完好无损,我就需要能够提取属性MyBlankObject中保存的“字符串”,然后将该JSON解码为单独的JSON对象。

我尝试过的所有方法都失败了。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用PHP表示法定义对象,然后让json_encode为您编码。

$phpArray = [
    'Var2' => 'My first var',
    'Var2' => 'My second var',
    'MyBlankObject' => new \stdClass
];

然后在JavaScript中:

var oMyJSON = JSON.parse('<?= json_encode($phpArray); ?>');

答案 1 :(得分:-2)

嘘,谢谢,但是。 。 。 我想通了。

str_replace(“ \”“,” \\“”,jsnVal));