【发布时间】:2017-11-13 17:33:10
【问题描述】:
可能是重复的问题,但找不到答案。我想对包含一些 JSON 字符串作为值的 javascript 对象进行字符串化。
例如:
var obj = {id:1, options:"{\"code\":3,\"type\":\"AES\"}"};
如您所见,键 'options' 的值是 JSON 字符串。我想对对象“obj”进行字符串化,而不是对内部 JSON 字符串进行双重字符串化。
除了用 JSON 字符串解析每个值并对对象进行字符串化之外,是否有任何干净整洁的解决方案?
【问题讨论】:
-
唯一干净的方法是首先避免混合 JSON 和 JavaScript 对象。
-
我很好奇你最初是如何在 JSON 结构中得到一个转义的 JSON 字符串的。理想情况下,
obj.options应该是 JSON 对象,而不是当前情况下的字符串。不幸的是,如果您无法更改它,但您知道哪些属性是 JSON,哪些不是,您可以在属性上使用JSON.parse(),替换字符串值,然后调用JSON.stringify()。 -
您是否提前知道对象的哪些属性包含字符串化的 JSON?
-
@KevinLH 我正在从 node.js 上的旧关系数据库中检索一些数据,该数据库在几列中有 JSON 字符串作为值。我知道我可以解析每个 JSON 字符串,然后对整个对象进行字符串化,但我很好奇是否还有其他更简单的解决方案。
-
一个值不能成为属性。 所以即使你替换所有的
\,选项的值也只是一个字符串值。要将options中的值作为主要obj的一部分,您必须亲自处理它(通过将其解析为JSON)。
标签: javascript json parsing object stringify