javascript - JSON stringify 对象与 json 字符串已经作为值

标签 javascript json parsing object stringify

可能是一个重复的问题,但找不到答案。我想将包含一些 JSON 字符串作为值的 javascript 对象字符串化。

例如:

var obj = {id:1, options:"{\"code\":3,\"type\":\"AES\"}"};

如您所见,键“options”的值是一个 JSON 字符串。我想对对象“obj”进行字符串化,而不对内部 JSON 字符串进行双重字符串化。

除了使用 JSON 字符串解析每个值并将对象字符串化之外,是否有任何干净整洁的解决方案?

最佳答案

假设您不知道哪些属性是 JSON,您可以使用 JSON.stringify 上的 replacer 函数参数来检查值是否是 JSON 字符串。下面的示例尝试解析 try..catch 中的每个字符串,因此不是最有效的,但应该可以解决问题(在嵌套属性上也是如此)

var obj = {id:1, options:"{\"code\":3,\"type\":\"AES\"}"};

function checkVal(key,val){
	if(typeof val === 'string'){
		try{return JSON.parse(val);}catch(e){}
  }
  return val;
}

var res = JSON.stringify(obj,checkVal);

console.log('normal output', JSON.stringify(obj))
console.log('with replacer', res);

关于javascript - JSON stringify 对象与 json 字符串已经作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44496075/

相关文章:

javascript - Internet Explorer 的后退按钮和 javascript

xml - SOAP、XML-RPC、JSON 之间有什么区别?

java - 查找结束 XML 标记

python - 如何使用 Python 3.x ast 模块解析 Python 2.x?

javascript - 为什么我的异步函数在早先的 promise 被履行之前被执行?

javascript - JavaScript 中继承的子对象共享相同的数组属性?

javascript - 使用 onkeypress 输入邮政编码时,事件监听器会等待 5 个字符,然后触发事件

java - JLex 扫描仪生成

javascript - minus minus 小于 "-->"运算符如何在 JavaScript 中工作?

python - 如何在 json 格式的字符串中使用 str.format?