我有一个包含多个项目的数组,其中一个是已编码的json字符串。我想要对整个数组进行json编码,但是这样做会重新json_encodes json并添加斜杠。我发现修复此问题的唯一方法是对值进行json_decode,然后对整个数组进行编码。我觉得这是浪费资源,我觉得必须有更好的方法。这样做是最好的方式吗?
这是我正在尝试json_encode的数组示例。
$arr = array();
$arr["var1"] = '{"test":"test"}';
$arr["var2"] = 'foo';
$arr["var3"] = 'bar';
如果我不首先解码var1并且我只编码整个数组,我得到一个像这样的结果
{"var1":"{\"test\":\"test\"}","var2":"foo","var3":"bar"}
注意json对象中的斜杠。
答案 0 :(得分:1)
json_encode()
返回一个包含值的json表示的字符串。
在示例中,php字符串作为数组'{"test":"test"}'
的一个元素传递,因此json_encode()
将其适当地编码为json格式,并使用转义引号"{\"test\":\"test\"}"
。
如果解码嵌套的json是一项非常耗费资源的任务,则解决方法是使用占位符而不是值{"var1":"PLACEHOLDER","var2":"foo","var3":"bar"}
,然后使用str_replace()
替换它。
然而,如果资源不是很重,那么如你所描述的那样简单解码它可能是一个更清洁的解决方案。