gpt4 book ai didi

javascript - 将 json 合并到另一个 json 作为子文档

转载 作者:行者123 更新时间:2023-11-28 13:17:30 26 4
gpt4 key购买 nike

我想以将第二个 json 中匹配的 stop_id 嵌套为第一个 json 中的子文档的方式合并两个 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
}]

我想合并这些文档,以便将 secondary.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);

一个可以玩的 fiddle 。 https://jsfiddle.net/u3etdqrz/3/

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com