连接两个json文件

concatenate two json file

本文关键字:两个 json 文件 连接      更新时间:2023-09-26

我有两个json文件:

F1.js:

{
    "A": {
        "time": "2015-11-26T08:20:15.130Z",
    },
    "B": {
        "time": "2015-11-26T08:30:19.432Z",   
    {
    "C": {
        "time": "2015-11-26T08:20:15.130Z",  
    }
}

F2.js:

[{
        "oaci": "A",
        "latitude": "45.979722222222",
        "longitude": "5.3377777777778"
    },
    {
        "oaci": "B",
        "latitude": "46.123333333333",
        "longitude": "5.8047222222222"
    },
    {
        "oaci": "C",
        "latitude": "47.123333333333",
        "longitude": "8.8047222222222"
    },
    {
        "oaci": "D",
        "latitude": "46.205555555556",
        "longitude": "5.2916666666667"
    }
]

我试着检查它是否是同一个"oaci";在文件F1.json中添加纬度和经度项,否则不执行任何操作。

我试着得到这个结果

F1.js

{
    "A": {
        "time": "2015-11-26T08:20:15.130Z",
         "latitude": "45.979722222222",
        "longitude": "5.3377777777778"
    },
    "B": {
        "time": "2015-11-26T08:30:19.432Z", 
        "latitude": "46.123333333333",
        "longitude": "5.8047222222222"  
    {
    "C": {
            "time": "2015-11-26T08:20:15.130Z", 
            "latitude": "47.123333333333",
            "longitude": "8.8047222222222" 
        }
}

我在json中开始的是,任何人都可以指向我

JavaScript(非Java)中的类似内容:

var obj = {
    "A": {
        "time": "2015-11-26T08:20:15.130Z"
    },
    "B": {
        "time": "2015-11-26T08:30:19.432Z"   
    },
    "C": {
        "time": "2015-11-26T08:20:15.130Z" 
    }
}
var list = [
    {
        "oaci": "A",
        "latitude": "45.979722222222",
        "longitude": "5.3377777777778"
    },
    {
        "oaci": "B",
        "latitude": "46.123333333333",
        "longitude": "5.8047222222222"
    },
    {
        "oaci": "C",
        "latitude": "47.123333333333",
        "longitude": "8.8047222222222"
    },
    {
        "oaci": "D",
        "latitude": "46.205555555556",
        "longitude": "5.2916666666667"
    }
]
function getListItem(name){
    for(var i = 0; i < list.length; i++){
        if(list[i].oaci == name){
            return list[i];   
        }
    }
}
for(var prop in obj){
    var listItem = getListItem(prop);
    obj[prop].latitude = listItem.latitude;
    obj[prop].longitude = listItem.longitude;
}
console.log(JSON.stringify(obj, null, 2));

最后一行输出:

{
  "A": {
    "time": "2015-11-26T08:20:15.130Z",
    "latitude": "45.979722222222",
    "longitude": "5.3377777777778"
  },
  "B": {
    "time": "2015-11-26T08:30:19.432Z",
    "latitude": "46.123333333333",
    "longitude": "5.8047222222222"
  },
  "C": {
    "time": "2015-11-26T08:20:15.130Z",
    "latitude": "47.123333333333",
    "longitude": "8.8047222222222"
  }
}

如果您调用时间戳对象t和坐标列表c,您可以这样实现:

for (timestamp in t) {
    for (coordinate in c) {
     if (c[coordinate]["oaci"] === timestamp) {
         t[timestamp]["latitude"] = c[coordinate]["latitude"];
         t[timestamp]["longitude"] = c[coordinate]["longitude"];
        }
    }
}

使用给定的对象(F1F2),这应该会使技巧

F2.forEach(function(_data){
    var currentData = F1[_data.oaci];
    if (currentData) for (var prop in _data) if (prop !== 'oaci'){
        currentData[prop] = _data[prop];
    }
});

F1中包含的结果。


这是一个动态解决方案,因此如果在对象中添加更多属性,它将继续工作。