gpt4 book ai didi

javascript - JSON.字符串化 : how to skip indentation for one (or more) objects

转载 作者:行者123 更新时间:2023-11-29 23:22:40 25 4
gpt4 key购买 nike

我想缩进所有对象除了一些特定的子对象。

这是我最接近解决问题的一次。在示例中,我想避免缩进 color:

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 }
}
]
}

实际结果(你猜对了,return JSON.stringify(val); 返回一个序列化的 string,这不是我想要的):

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

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);

function replacer(name, val) {
if (name === 'color') {
return JSON.stringify(val); // stringify with no indentation
} else {
return val; // return as is
}
};

最佳答案

您可以去掉以 "color": 开头的大括号中的所有空格。

var 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 } }
]
},
str = JSON
.stringify(obj, null, 2)
.replace(/("color": \{)([^}]+)/g, (_, a, b) => a + b.replace(/\s+/g, ' '));

console.log(str);

关于javascript - JSON.字符串化 : how to skip indentation for one (or more) objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50155202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com