Javascript 如何将所有json值转换为字符串而无需迭代
我有JSON,其中所有值都必须更改为字符串。这些值可以是数字、布尔值、未定义值或空值Javascript 如何将所有json值转换为字符串而无需迭代,javascript,json,Javascript,Json,我有JSON,其中所有值都必须更改为字符串。这些值可以是数字、布尔值、未定义值或空值 { "obj1": [{ "n1": "n", "n2": 1, "n3": true }, { "n1": "n", "n2": 1, "n3": null }] } 预期结果是所有值都应格式化为字符串 示例: { "obj1": [{ "n1": "n",
{
"obj1": [{
"n1": "n",
"n2": 1,
"n3": true
},
{
"n1": "n",
"n2": 1,
"n3": null
}]
}
预期结果是所有值都应格式化为字符串
示例:
{
"obj1": [{
"n1": "n",
"n2": "1",
"n3": "true"
},
{
"n1": "n",
"n2": "1",
"n3": "null"
}]
}
通过迭代JSON对象,我们可以做到这一点,但有没有更简单的方法可以做到这一点。您可以使用replacer函数检查值是否为数字,然后获取字符串值,或者仅获取值
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);
log(json);
log(JSON.parse(JSON))代码>您可以使用
例如:
var object = { obj1: [{ n1: "n", n2: 1, n3: true }, { n1: "n", n2: 1, n3: null }] };
要查看结果,请使用Json.stringify()
“没有迭代”是什么意思?一些迭代是需要的,隐藏的或明确的。你说你有JSON,所以我们谈论的是一个大字符串,对吗?我知道它背后需要迭代,但它背后的任何更简单的工作方式
console.log(JSON.stringify(object, (key, value) => value ? value.toString() : value));
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"
}
]
}
*/