Javascript stringify:如何跳过一个(或多个)对象的缩进
我想缩进除某些特定子对象之外的所有对象 这是我离解决这个问题最近的一次了。在本例中,我希望避免缩进Javascript stringify:如何跳过一个(或多个)对象的缩进,javascript,json,indentation,Javascript,Json,Indentation,我想缩进除某些特定子对象之外的所有对象 这是我离解决这个问题最近的一次了。在本例中,我希望避免缩进颜色: let obj = { colorsPerValue: [ { value: 0.0, color: { r: 240, g: 59, b: 32 } }, { value: 0.5, color: { r: 255, g: 255, b: 255 } }, { value: 1.0, color: { r: 44, g: 162, b
颜色
:
let obj = {
colorsPerValue: [
{ value: 0.0, color: { r: 240, g: 59, b: 32 } },
{ value: 0.5, color: { r: 255, g: 255, b: 255 } },
{ value: 1.0, color: { r: 44, g: 162, b: 95 } }
]
};
let str = JSON.stringify(obj, replacer, 2);
console.log(str);
replacer(name, val) {
if (name === 'color') {
return JSON.stringify(val); // stringify with no indentation
} else {
return val; // return as is
}
};
预期结果:
{
colorsPerValue: [
{
value: 0.0,
color: { r: 240, g: 59, b: 32 }
},
{
value: 0.5,
color: { r: 255, g: 255, b: 255 }
},
{
value: 1.0,
color: { r: 44, g: 162, b: 95 }
}
]
}
实际结果(您猜对了,返回JSON.stringify(val);
返回一个序列化的字符串,这不是我想要的):
让obj={
颜色右值:[
{值:0.0,颜色:{r:240,g:59,b:32},
{值:0.5,颜色:{r:255,g:255,b:255},
{值:1.0,颜色:{r:44,g:162,b:95}
]
};
让str=JSON.stringify(obj,replacer,2);
console.log(str);
函数替换程序(名称,val){
如果(名称=='color'){
返回JSON.stringify(val);//stringify不带缩进
}否则{
return val;//按原样返回
}
};
您可以去掉以的“color”开头的花括号中的所有空格:
var obj={
颜色右值:[
{值:0.0,颜色:{r:240,g:59,b:32},
{值:0.5,颜色:{r:255,g:255,b:255},
{值:1.0,颜色:{r:44,g:162,b:95}
]
},
str=JSON
.stringify(obj,null,2)
.replace(/(“color”:\{)([^}]+)/g,({,a,b)=>a+b.replace(/\s+/g,”);
console.log(str)你想“漂亮地打印”你的json,还是你想做什么?@MichaelHirschler是的,就是这样。一些“较低的对象”对读者来说“不太有趣”,我需要让它们不缩进,因为否则它们会“混淆”周围其他有趣的信息。
{
"colorsPerValue": [
{
"value": 0,
"color": "{\"r\":240,\"g\":59,\"b\":32}"
},
{
"value": 0.5,
"color": "{\"r\":255,\"g\":255,\"b\":255}"
},
{
"value": 1,
"color": "{\"r\":44,\"g\":162,\"b\":95}"
}
]
}