Javascript JSON.stringify转换对象';将属性名称转换为字符串
我有一件像这样的东西Javascript JSON.stringify转换对象';将属性名称转换为字符串,javascript,json,Javascript,Json,我有一件像这样的东西 var obj = { name: "foo", age: 23 }; for (i in obj) { if (obj[i] == "foo") { obj[i] = "bob"; } } {"name":"bob","age":23} 操作对象后 当使用JSON.stringify(obj)时,我得到如下输出 var obj = { name: "foo", age: 23 }; for (i in obj)
var obj = {
name: "foo",
age: 23
};
for (i in obj) {
if (obj[i] == "foo") {
obj[i] = "bob";
}
}
{"name":"bob","age":23}
操作对象后当使用
JSON.stringify(obj)
时,我得到如下输出
var obj = {
name: "foo",
age: 23
};
for (i in obj) {
if (obj[i] == "foo") {
obj[i] = "bob";
}
}
{"name":"bob","age":23}
但是我不需要objects属性作为字符串来转换为objects属性名。所以我需要这样的输出
{name:“bob”,age:23}
。如果我错了,请纠正我。这看起来是正确的输出
在wiki中,示例看起来是相同的
在JS中,这根本不是问题
请看这个,将JSON字符串解析回一个对象
也许更明智的做法是告诉我们为什么需要从钥匙上取下双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 += "}";
正如阿尼鲁达所说。如果要删除键的双引号,则需要正则表达式。如下所示:
JSON.stringify(obj).replace(/"([^"]*)":/g, '$1:')
是的,我们可以用正则表达式来解决这个问题
console.log(JSON.stringify({"name":"bob","age":23}).replace(/\"([^(\")"]+)\":/g,"$1:"))
使用JSON.stringify(obj)解析对象不仅要读取属性值,还要读取属性名称,以便将对象转换为JSON字符串(例如package.JSON中的语法样式look,其中bouth属性和值具有parenthase)。对象属性成为字符串是因为对象已字符串化,因此如果不希望属性成为字符串,请在对象上使用JSON.stringify() 将属性作为字符串有什么不对?这是json格式bro。我知道将属性作为字符串没有问题。但是我需要输出格式,就像我在问题中问的那样,为什么不把对象字符串化呢???@htoniv-对于
JavaScript
对象,键总是字符串
。。总是…很抱歉回答我自己的问题。但是如果不使用regExp,我需要解决方案,我知道JSON.stringify会将键值转换为字符串。但是我不需要这样的输出。请理解我的问题。