【发布时间】:2015-08-31 02:11:12
【问题描述】:
我有一个包含 JSON 字符串的数组。
Array
(
[0] => Array
(
[name] => Original
[nutrients] => {"calories":{"value":2500,"operator":2},"protein":{"value":500,"operator":1},"carbs":{"value":200,"operator":0},"fat":{"value":50,"operator":0},"sugar":{"value":1,"operator":2}}
)
[1] => Array
(
[name] => Rest
[nutrients] => {"calories":{"value":5000,"operator":2},"sugar":{"value":10,"operator":2}}
)
)
我想把整个数组变成一个 JSON 字符串
echo json_encode($array);
但这会在所有引号前抛出\
[{"name":"Original","nutrients":"{\"calories\":{\"value\":2500,\"operator\":2},\"protein\":{\"value\":500,\"operator\":1},\"carbs\":{\"value\":200,\"operator\":0},\"fat\":{\"value\":50,\"operator\":0},\"sugar\":{\"value\":1,\"operator\":2}}"},{"name":"Rest","nutrients":"{\"calories\":{\"value\":5000,\"operator\":2},\"sugar\":{\"value\":10,\"operator\":2}}"}]
这个问题的出现是因为营养值已经是一个JSON字符串。
如果数组已经包含 JSON 字符串,而引号前没有斜杠,如何将其转换为 JSON 字符串?
【问题讨论】:
-
(1) 编写自定义 JSON 生成器。 (2) 或者解码该数组结构中的jsonish字符串,然后重新编码所有内容。
-
循环遍历数组将每个json字符串分配给一个新数组,用占位符替换,json编码数组,替换原来的json字符串?
-
这很好,它会在引号前面抛出一个`\`。 JSON 属性可以被引用,也可以不被引用。如果没有不符合正常属性命名标准的空格或字符情况,则不必使用引号。你的问题是你有整个字符串里面有 JSON
-
json_encode()通常用于编码 PHP 关联数组,而不是 PHP 中已经是字符串的 JavaScript 对象。