连接两个json文件

时间:2015-11-26 10:25:32

标签: javascript json

我有两个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,任何人都可以指出我

3 个答案:

答案 0 :(得分:1)

JavaScript (非Java)中的this

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"
  }
}

答案 1 :(得分:1)

使用您的给定对象(android.support.v4.app.FragmentManager manager = getSupportFragmentManager(); F1)这应该成功

F2

F2.forEach(function(_data){ var currentData = F1[_data.oaci]; if (currentData) for (var prop in _data) if (prop !== 'oaci'){ currentData[prop] = _data[prop]; } }); 中包含的结果。

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

答案 2 :(得分:1)

如果你调用时间戳对象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"];

        }
    }
}