如何将 JSON 对象作为新级别添加到另一个 JSON 对象?

Posted

技术标签:

【中文标题】如何将 JSON 对象作为新级别添加到另一个 JSON 对象?【英文标题】:How do I add JSON object as new level to another JSON object? 【发布时间】:2011-06-16 02:09:25 【问题描述】:

我有一个代码,它最终收集了两个 JSON 对象,就像这样。

var jsonL1 = "holder1": 
var jsonL2 = "section":"0 6","date":"11/12/13"

我想在 jsonL1.holder1 中插入 jsonL2 并将其合并到一个 JSON 对象中。

期望的输出


    "holder1": 
        "section": "0 6",
        "date": "11/12/13"
    

我该怎么做?

【问题讨论】:

那不是 JSON。这些是 javascript 对象文字。 @patrick dw 只要不添加字符串、数组、数字、哈希和空值以外的对象,它们不是可以互换的吗? @Radek S:不。JSON 是一种数据交换格式,恰好是 JavaScript 对象文字符号的子集。 JSON 与语言无关。这可能不是最好的类比,但考虑一下 XML:XML 也可以用作数据交换格式。通常它会被转换成 DOM。所以DOM可以用来表示一个XML文档。 JSON 和 JavaScript 中的对象也是如此。唯一的区别是 JSON 可以“自然地”转换为 JavaScript 对象。 @Felix 是对的。 JSON 数据是遵循 JSON 规范的字符串。 【参考方案1】:

这很简单:

L1.holder1 = L2

正如@patrick 已经说过的,我从变量名中删除了“json”,您处理的不是“JSON 对象”,而是对象文字。

另请参阅:There is no such thing as a JSON object

您可能还想了解有关objects in JavaScript 的更多信息。

【讨论】:

【参考方案2】:

如果您希望第一个对象引用第二个对象,请执行以下操作:

jsonL1.holder1 = jsonL2;

如果您想要第二个的副本,那就不同了。

所以这取决于您将其合并到一个对象中的含义。使用上面的代码,对jsonL2 的更改将在jsonL1.holder 中可见,因为它们实际上只是引用同一个对象。


有点离题,但更直观地描述 JSON 数据和 javascript 对象之间的区别:

    // this is a javascript object
var obj = "section":"0 6","date":"11/12/13";

    // this is valid JSON data
var jsn = '"section":"0 6","date":"11/12/13"';

【讨论】:

以上是关于如何将 JSON 对象作为新级别添加到另一个 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章

js中如何向json数组添加元素

如何在 Mongoose 中将一个模式的引用添加到另一个模式并通过 json 插入数据?

将数据从一个 json 对象动态添加到另一个

将新属性添加到另一个数组中的现有对象数组

在 react js 中添加指向 json 对象的链接

如何在反应钩子中创建一个新的 JSON 对象?