【问题标题】:combines parts of a JSON array with another JSON array将 JSON 数组的一部分与另一个 JSON 数组组合
【发布时间】:2015-11-25 07:20:08
【问题描述】:

我正在使用亚马逊网络服务和他们的数据库 dynamodb。数据库以json的形式返回查询如下:

{ Items: 
   [ { user: 'a' },
     { user: 'an' },
     { user: 'm' } ],
  Count: 3,
  ScannedCount: 3 }

我只对“用户”属性感兴趣,对计数和扫描计数没有用处。有时我会在我的应用程序服务器 (nodejs) 中执行多个请求并接收多个 json 响应。我想将所有这些响应合并到一个 json 中。本质上将所有用户组合成一个 json 数组并将其发回。所以有时我可以收到这样的请求:

{ Items: 
   [ { from_username: 'a' },
     { from_username: 'an' },
     { from_username: 'm' } ],
  Count: 3,
  ScannedCount: 3 }


{ Items: 
   [ { from_username: 'a' } ],
  Count: 1,
  ScannedCount: 1 }


{ Items: 
   [ { from_username: 'v' },
     { from_username: 'a' }],
  Count: 2,
  ScannedCount: 2 }

并且想将它组合成这样的东西:

   {Items:
   [ { from_username: 'a' },
     { from_username: 'an' },
     { from_username: 'm' },
     { from_username: 'a' },
     { from_username: 'v' },
     { from_username: 'a' } ]

我尝试过这样的事情:

var json = [json1, json2, json3]

但这只会连接并且不会删除不需要的计数字段。

【问题讨论】:

  • @prasun 请查看更新后的问题。

标签: javascript json node.js


【解决方案1】:

不要将整个json复制到Array中,而是只将JSON的Items属性添加到数组中

var json = [json1.Items, json2.Items, json3.Items]

如果您还想保留 Items 键,请使用:

var json = [{Items: json1.Items}, {Items: json2.Items}, {Items:json3.Items}]

如果你想要一个数组下的所有项目,你可以使用:

var json = {Items: []};
json.Items = json.Items.concat(json1.Items);
json.Items = json.Items.concat(json2.Items);
json.Items = json.Items.concat(json3.Items);

【讨论】:

  • 这非常接近,但它在 1 内创建了 3 个数组(例如 [ [json data 1], [json data 2], [json data 3] )。相反,我希望所有键都在一个没有任何子数组的数组中(所有数组中的所有数据都将具有相同的键,'users')。
  • 完美,正是我需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
相关资源
最近更新 更多