如何将 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 对象?的主要内容,如果未能解决你的问题,请参考以下文章