JSON.stringify将对象的属性名称转换为字符串
问题描述:
我有一个像这样的对象。JSON.stringify将对象的属性名称转换为字符串
var obj = {
name: "foo",
age: 23
};
for (i in obj) {
if (obj[i] == "foo") {
obj[i] = "bob";
}
}
使用JSON.stringify(obj)
当我得到这样的输出操纵对象
后。
{"name":"bob","age":23}
但我不需要对象属性作为字符串如何转换为对象属性名称。所以我需要这样的输出{name:"bob",age:23}
。如果我错了,请纠正我。
答
这看起来像是正确的输出。
在维基的例子看起来相同WIKI JSON
在JS这不应该是一个问题都没有。
请看看这个解析您的JSON字符串返回一个对象JSON.parse
也许这将是更聪明的,为什么你需要取消导航键双qoutes告诉我们。可能JSON不是问题,我会看看实现。
答
您不需要这样做,因为{"name":"bob","age":23}
是有效的JSON。但是,如果你真的想删除关键的引号:
var json = JSON.stringify(obj);
var keyVals = json.substr(1,json.length-2).split(/,/g);
var output = "{";
keyVals.forEach(function(keyVal) {
var parts = keyVal.split(":");
output += parts[0].replace(/"/g, "");
output += ":";
output += parts[1];
output += ",";
});
output = output.substr(0, output.length - 1);
output += "}";
答
正如Anirudha说。如果你想删除键的双引号,你需要正则表达式。作如下:
JSON.stringify(obj).replace(/"([^"]*)":/g, '$1:')
答
解析与JSON.stringify(OBJ)的对象不只是看你的财产价值,而且你的属性名称,以便将对象转换为JSON字符串(package.json中的示例语法样式,其中bouth属性和值具有父级)。你的对象属性变成了字符串,因为对象被字符串化了,所以如果你不想让属性成为字符串,就不要在对象上使用JSON.stringify()。
将属性设置为字符串有什么问题? –
这是json格式bro。 – Anistark
我知道将属性设置为字符串没有问题。但我需要的输出格式是像我问的问题 – htoniv