【问题标题】:How to merge two json objects to get one json object?如何合并两个json对象得到一个json对象?
【发布时间】:2016-04-05 08:34:39
【问题描述】:

我正在尝试合并/组合两个 json 对象以获得一个最终的 json 对象(合并对象)。我已经尝试过fiddle,但我越来越喜欢:[object Object] 如果我使用 $.extend 和Uncaught TypeError: testjson1.concat is not a function 如果我使用 cancat 则会出错。请帮助我如何使用 javascript 或 jquery 或 angularJS 获取所需的 json 对象?

【问题讨论】:

  • 不要提醒。尝试将其登录到控制台,它应该可以工作。或者使用JSON.stringify(finalObject) 将对象转换为字符串。
  • 第一个想要你想要的
  • JSON,stringify(obj, null, 2) 打印出更漂亮的对象
  • 示例最终结果 JSON 实际上与testjson1 相同。你能更新小提琴吗?

标签: javascript jquery angularjs json


【解决方案1】:

您可能希望将 JSON 转换为 javascript 对象,然后像这样执行合并并转换回 JSON。

How can I merge properties of two JavaScript objects dynamically?

基本上遍历键并分配它们。

var obj1 = JSON.parse(testjson1),
    obj2 = JSON.parse(testjson2)

for (var attrname in obj2) { obj1[attrname] = obj2[attrname] }

var finaljsonresult = JSON.stringify(obj1)

但这只是一个偷偷摸摸的高峰,您可能希望查看链接的答案以获取更多信息。

【讨论】:

    【解决方案2】:

    既然这个问题是用 AngularJS 标记的,为什么不使用 angular.fromJson 将 JSON 转换为 JavaScript 对象,然后将它们与 angular.merge 合并?

    angular.extend 不同,angular.merge 递归地下降到源对象的对象属性中,执行深层复制

    【讨论】:

      【解决方案3】:

      var obj1 = {
              'a': 'aa',
              'b': 'bb',
              'c': 'cc'
          },
          obj2 = {
              'a': 'aa',
              'd': 'dd',
              'e': 'ee'
          };
      
      for (var key in obj2) {
          obj1[key] = obj2[key]
      }
      
      var res = JSON.stringify(obj1);
      alert(res);
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

      【讨论】:

      • 你不需要 jQuery。
      【解决方案4】:
      The Extend keyword in jquery making stringify:
        var object1 = { 
                       apple: 0, 
                      banana: { weight: 52, price: 100 }, 
                      cherry: 97 
                      };
              var object2 = {
                               banana: { price: 200 },
                               durian: 100};
              var ss = $.extend(object1, object2);
              alert(JSON.stringify(ss));
      

      【讨论】:

      • 在发布 cmets 或答案时使用适当的代码格式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多