我想合并两个json文件,将第二个json中匹配的stop_id作为子文档嵌套在第一个json中。

这就是我的意思:

first.json:例如,这是一个json文件,其中包含火车的车站。每个都有一个stop_id字段。

[
  {
    "stop_id":70021,
    "stop_name":"CALTRAIN - 22ND ST STATION",
    "stop_lat":37.757692,
    "stop_lon":-122.392318,
    "zone_id":3329
  },
  {
    "stop_id":70022,
    "stop_name":"CALTRAIN - 22ND ST STATION",
    "stop_lat":37.757692,
    "stop_lon":-122.392318,
    "zone_id":3329
  },
  {
    "stop_id":70151,
    "stop_name":"CALTRAIN - ATHERTON STATION",
    "stop_lat":37.464458,
    "stop_lon":-122.198152,
    "zone_id":3331
  }]


second.json:通过stop_id包含与车站有关的旅行信息

[
  {
    "trip_id":"RTD8997283",
    "arrival_time":"05:40:00",
    "departure_time":"05:40:00",
    "stop_id":70021,
    "stop_sequence":1
  },
  {
    "trip_id":"RTD8997283",
    "arrival_time":"05:52:00",
    "departure_time":"05:52:00",
    "stop_id":70021,
    "stop_sequence":2
  },
  {
    "trip_id":"RTD8449096",
    "arrival_time":"07:33:00",
    "departure_time":"07:33:00",
    "stop_id":70022,
    "stop_sequence":1
  }]


我想以以下方式合并这些文档:将second.json中匹配的stop_id嵌套在first.json中的stop_id文档下面。因此,例如,合并的最终结果将如下所示:

merged.json

[{
    "stop_id": 70021,
    "stop_name": "CALTRAIN - 22ND ST STATION",
    "stop_lat": 37.757692,
    "stop_lon": -122.392318,
    "zone_id": 3329,
    "trip": [{
        "trip_id": "RTD8997283",
        "arrival_time": "05:40:00",
        "departure_time": "05:40:00",
        "stop_id": 70021,
        "stop_sequence": 1
    }, {
        "trip_id": "RTD8997283",
        "arrival_time": "05:52:00",
        "departure_time": "05:52:00",
        "stop_id": 70021,
        "stop_sequence": 2
    }]
}, {
    "stop_id": 70022,
    "stop_name": "CALTRAIN - 22ND ST STATION",
    "stop_lat": 37.757692,
    "stop_lon": -122.392318,
    "zone_id": 3329,
    "trip": [{
        "trip_id": "RTD8449096",
        "arrival_time": "07:33:00",
        "departure_time": "07:33:00",
        "stop_id": 70022,
        "stop_sequence": 1
    }]
}, {
    "stop_id": 70151,
    "stop_name": "CALTRAIN - ATHERTON STATION",
    "stop_lat": 37.464458,
    "stop_lon": -122.198152,
    "zone_id": 3331
}]


对于大型数据集,可以通过javascript或任何其他方法进行这种合并的任何方法吗?

最佳答案

您可以array.forEach

first.forEach(function (val, index, theArray) {
   val.trip = [];
   second.forEach(function (val2, index, theArray) {
       if(val2.stop_id === val.stop_id){
           val.trip.push(val2);
       }
   });
});

console.log(first);


摆弄一个小提琴。
https://jsfiddle.net/u3etdqrz/3/

关于javascript - 将json合并为另一个json作为子文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36401619/

10-11 22:28
查看更多