【问题标题】:How do I add JSON object as new level to another JSON object?如何将 JSON 对象作为新级别添加到另一个 JSON 对象?
【发布时间】: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 规范的字符串。

标签: javascript json multidimensional-array


【解决方案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"}';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2021-07-24
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多