JSON.stringify将对象的属性名称转换为字符串

时间:2016-11-23 10:26:06

标签: javascript json

我有一个像这样的对象。

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}。如果我错了,请纠正我。

5 个答案:

答案 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()。

相关问题