我有JSON,其中所有值都必须更改为字符串。这些值可以是数字,布尔值,未定义或null。
{
"obj1": [{
"n1": "n",
"n2": 1,
"n3": true
},
{
"n1": "n",
"n2": 1,
"n3": null
}]
}
预期结果是所有值都应格式化为string
。
示例:
{
"obj1": [{
"n1": "n",
"n2": "1",
"n3": "true"
},
{
"n1": "n",
"n2": "1",
"n3": "null"
}]
}
通过遍历JSON对象,我们可以做到这一点,但是有没有更简单的方法可以做到这一点。
答案 0 :(得分:4)
您可以将JSON.stringify
与替换函数一起使用,并检查这些值是否为数字,然后获取一个字符串值或仅该值。
var object = { obj1: [{ n1: "n", n2: 1, n3: true }, { n1: "n", n2: 1, n3: null }] },
json = JSON.stringify(object, (k, v) => v && typeof v === 'object' ? v : '' + v);
console.log(json);
console.log(JSON.parse(json));
答案 1 :(得分:1)
您可以使用Json.stringify()方法
例如:
var object = { obj1: [{ n1: "n", n2: 1, n3: true }, { n1: "n", n2: 1, n3: null }] };
要查看结果,请使用Json.stringify()
console.log(JSON.stringify(object, (key, value) => value ? value.toString() : value));
答案 2 :(得分:0)
const obj = {
"obj1": [{
"n1": "n",
"n2": 1,
"n3": true
}, {
"n1": "n",
"n2": 1,
"n3": null
}]
};
const text = JSON.stringify(obj)
const newObj = text.replace(/:([^"[{][0-9A-Za-z]*)([,\]\}]?)/g, ':\"$1\"$2')
console.log(newObj);
/*
{"obj1":[{"n1":"n","n2":"1","n3":"true"},{"n1":"n","n2":"1","n3":"null"}]}
*/
// Em, let's format it
console.log(JSON.stringify(JSON.parse(newObj), null, 2));
/*
{
"obj1": [
{
"n1": "n",
"n2": "1",
"n3": "true"
},
{
"n1": "n",
"n2": "1",
"n3": "null"
}
]
}
*/