【问题标题】:Appending a key value pair to a json object将键值对附加到 json 对象
【发布时间】:2013-01-11 05:07:29
【问题描述】:

这是我正在使用的 json 对象

{
    "name": "John Smith",
    "age": 32,
    "employed": true,
    "address": {
        "street": "701 First Ave.",
        "city": "Sunnyvale, CA 95125",
        "country": "United States"
    },
    "children": [
        {
            "name": "Richard",
            "age": 7
        },
        {
            "name": "Susan",
            "age": 4
        },
        {
            "name": "James",
            "age": 3
        }
    ]
}

我希望这是另一个键值对:

"collegeId": {
                      "eventno": "6062",
                      "eventdesc": "abc"
                                            }; 

我尝试了 concat 但这给了我 || 的结果符号,我 cdnt 迭代。我使用了溢出,但只删除了逗号。

concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2)));

如何将密钥对值添加到现有的 json 对象? 我正在使用 javascript。

【问题讨论】:

  • @Aaush,json1 是否包含第一个代码示例中描述的对象?
  • @JonathanM 是的,它包含第一个代码中描述的对象

标签: json


【解决方案1】:

这是最简单的方法,对我很有效。

var testJson = {
        "name": "John Smith",
        "age": 32,
        "employed": true,
        "address": {
            "street": "701 First Ave.",
            "city": "Sunnyvale, CA 95125",
            "country": "United States"
        },
        "children": [
            {
                "name": "Richard",
                "age": 7
            },
            {
                "name": "Susan",
                "age": 4
            },
            {
                "name": "James",
                "age": 3
            }
        ]
    };
    testJson.collegeId = {"eventno": "6062","eventdesc": "abc"};

【讨论】:

  • 您可以将最后两行简化为:testJson.collegeId ={"eventno": "6062","eventdesc": "abc"};
【解决方案2】:

只需使用 JSON.parse() 将 JSON 字符串转换为对象,然后添加属性。如果您需要将其重新转换为字符串,请执行JSON.stringify()

顺便说一句,没有 JSON 对象这样的东西。有对象,还有代表这些对象的 JSON 字符串。

【讨论】:

  • OP 没有询问如何将字符串转换为对象,而是询问如何扩展对象。也许你应该编辑你的答案。
  • @Travis,是的,有 JSON 对象,但不像 OP 想的那样。 JSON 对象是由 JSON 库创建的对象,具有.parse().stringify() 等属性。
【解决方案3】:

您需要在引用“collegeId”处创建一个对象,然后为该对象再创建两个键值对,如下所示:

var concattedjson = JSON.parse(json1);
concattedjson["collegeId"] = {};
concattedjson["collegeId"]["eventno"] = "6062";
concattedjson["collegeId"]["eventdesc"] = "abc";

假设 concattedjson 是您的 json 对象。如果你只有一个字符串表示,你需要先parse它,然后再扩展它。

编辑

demo 适用于那些认为这行不通的人。

【讨论】:

  • 如果您的 concattedjson 与 OP 相同,则此方法无效。他是一个字符串。
  • @JonathanM - 也许您应该阅读我为您发布的链接。它是一个 JSON 对象,是的,它们确实存在。
  • 我明白你在我的回答的评论中所说的,我澄清了。您在这里的回答仍然不适用于他的 JSON string.
  • 这不起作用的原因是 OP 的 concattedjson 是一个 字符串。字符串是.stringify() 方法的结果。你的小提琴假设它已经是一个对象。事实上,你的小提琴根本不涉及任何 JSON。它只涉及一个对象。
  • @JonathanM - 这是第二个例子,它是一个字符串:jsfiddle.net/2bJdg/1
【解决方案4】:
const newTestJson = JSON.parse(JSON.stringify(testJson));
newTestJson.collegeId = {"eventno": "6062","eventdesc": "abc"};
testJson = newTestJson;

【讨论】:

  • 这是一个纯代码答案。一般来说,添加一些描述来解释代码的作用以及它是如何工作的会更好。您能否请edit您的回答并添加一些评论?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2013-10-15
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多