可能是一个重复的问题,但找不到答案。我想将包含一些 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/