Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify:如何跳过一个(或多个)对象的缩进_Javascript_Json_Indentation - Fatal编程技术网

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){ "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}" } ] }