我有一个像这样的对象。
var obj = {
name: "foo",
age: 23
};
for (i in obj) {
if (obj[i] == "foo") {
obj[i] = "bob";
}
}
操纵物体后
当使用JSON.stringify(obj)
时,我得到这样的输出。
{"name":"bob","age":23}
但我不需要将objects属性作为字符串如何转换为对象属性名称。所以我需要这样的输出{name:"bob",age:23}
。如果我错了,请纠正我。
答案 0 :(得分:2)
这看起来像是正确的输出。
在wiki中,该示例看起来相同WIKI JSON
在JS中根本不应该成为问题。
请看这个将你的JSON字符串解析回对象JSON.parse
告诉我们为什么你需要从密钥中删除双qoutes会更聪明。可能JSON不是问题,我会看看实现。
答案 1 :(得分:1)
您不需要这样做,因为{"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 += "}";
答案 2 :(得分:1)
正如Anirudha所说。如果要删除键的双引号,则需要正则表达式。作为fllows:
JSON.stringify(obj).replace(/"([^"]*)":/g, '$1:')
答案 3 :(得分:0)
是的,我们可以使用正则表达式来解决这个问题
console.log(JSON.stringify({"name":"bob","age":23}).replace(/\"([^(\")"]+)\":/g,"$1:"))
答案 4 :(得分:0)
使用JSON.stringify(obj)解析对象不会只读取属性值,而是读取属性名称以将对象转换为JSON字符串(示例语法样式在package.json中查找bouth属性和值有父母)。您的对象属性变为字符串,因为该对象是字符串化的,因此如果您不希望属性成为字符串,请在对象上使用JSON.stringify()。