我的JSON字符串是:
{name:"MyNode", width:200, height:100}
我想将其更改为:
{name:"MyNode", width:"200", height:"100"}
以便所有整数值都成为字符串
我的主要代码是:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"xy": 10021
},
"IDNumber":
[
{
"type": "home",
"number": 1234
},
{
"type": "fax",
"number": 4567
}
]
}
我需要所有整数值成为字符串
答案 0 :(得分:6)
这是一个JavaScript对象文字,而不是JSON。总之...
var obj = {name:"MyNode", width:200, height:100};
for (var k in obj)
{
if (obj.hasOwnProperty(k))
{
obj[k] = String(obj[k]);
}
}
// obj = {name:"MyNode", width: "200", height: "100"}
如果您实际使用的是JSON,而不是对象,事先JSON.parse()
字符串,之后是JSON.stringify()
对象。
答案 1 :(得分:5)
如果必须对JSON字符串进行操作:
json = json.replace (/:(\d+)([,\}])/g, ':"$1"$2');
答案 2 :(得分:0)
我用
const stringifyNumbers = obj => {
const result = {};
Object.entries(obj).map(entry => {
const type = typeof entry[1];
if (Array.isArray(entry[1])) {
result[entry[0]] = entry[1].map(entry => stringifyNumbers(entry));
} else if (type === 'object' && !!entry[1]) {
result[entry[0]] = stringifyNumbers(entry[1]);
} else if (entry[1] === null) {
result[entry[0]] = null;
} else if (type === 'number') {
result[entry[0]] = String(entry[1]);
} else {
result[entry[0]] = entry[1];
}
});
return result;
}
我认为大多数ID应该是字符串。如果您的api无法提供ID作为字符串,则此代码段会将其转换。