当我在JavaScript中的复杂对象上调用JSON.stringify()时,它会生成一个包含大量转义序列的字符串(\“,\\”等)。
如何让它创建一个人类可读的JSON字符串呢?即,您可以将其复制/粘贴到Web上的众多JSON验证器之一?
为了澄清,我的第一个问题是删除转义序列。
答案 0 :(得分:7)
您可以使用替换者。 JSON.stringify.Replacer提供的第二个参数可以是函数或数组。
在你的情况下,我们可以创建一个用空格替换所有特殊字符的函数。下面的例子替换了空格和下划线。
function replacer(key, value) {
return value.replace(/[^\w\s]/gi, '');
}
var foo = {"a":"1","b":2};
var jsonString = JSON.stringify(foo, replacer);
如果您只想替换一个特殊字符,请使用:
JSON.stringify({ a: 1, b: 2 }, null, '\t');
有关替换者的详细信息,请查看MDN页面 JSON.stringify() 。
答案 1 :(得分:3)
您可以在JSON.stringify上使用格式。
'\t'
代表标签字符
JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
// returns the string:
// '{
// "uno": 1,
// "dos": 2
// }'
答案 2 :(得分:1)
JSON.stringify(value[, replacer[, space]])
空格:用于将空格插入输出JSON字符串的字符串或数字对象,以便于阅读。
Replacer:一个改变字符串化过程行为的函数,或一个String和Number对象数组,用作白名单,用于选择要包含在JSON中的值对象的属性串。如果此值为null或未提供,则对象的所有属性都包含在生成的JSON字符串中。
所以你可以做到
var x = {"name":"void", "type":"O'\"Rielly"};
document.write(JSON.stringify(x, null, ' '));

答案 3 :(得分:1)
你可以使用
JSON.stringify()
和 replaceAll()
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
const foo = {
A: 'This is my \\',
B: 'This \\ is his \\'
};
let jsonString = JSON.stringify(foo, null, 2);
document.write(jsonString);
jsonString = jsonString.replaceAll('\\', '');
document.write('<pre>' + jsonString + '</pre>');
答案 4 :(得分:0)
我会使用JSON.stringify()
,
JSON.stringify()
方法将JavaScript值转换为JSON字符串,如果指定了replacer函数,则可以选择替换值,或者如果指定了replacer数组,则可以选择仅包含指定的属性。
有四个空格和一个<pre>...</pre>
的适当显示环境。
结果良好,可读,可复制以供其他用途。
var object = { name: 'void', type1: "O'\"This", type2: 'O\'That', a: [1, 2, 3] };
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
&#13;