繁体   English   中英

带有Javascript的JSON结构

[英]The JSON structure with Javascript

我有一个具有以下结构的JSON文件:

            {"coordinates":
                    [[3.562251301440316,-76.2809944152832],
                    [3.54117750673122,-76.28803253173828],
                    [3.5488874874187673,-76.31258010864258],
                    [3.5643072556238033,-76.3139533996582],
                    [3.569104464176614,-76.29936218261719],
                    [3.565335230992449,-76.2894058227539],
                    [3.562593960789916,-76.28219604492188]]
            }

正确的结构是:

            {
                "u1":   {"a":3.5649925726638965, "o":-76.32013320922852},
                "u2":   {"a":3.5432335078647568, "o":-76.30863189697266},
                "u3":   {"a":3.5581393792979417, "o":-76.2835693359375},
                "u4":   {"a":3.571503059060428, "o":-76.29026412963867},
                "u5":   {"a":3.5774995188413183, "o":-76.3081169128418},
                "u6":   {"a":3.5804120708676126, "o":-76.32476806640625}
            }

问题:使用以下代码javascript的第一个坐标,我必须进行哪些更改?

我已经准备好第二个坐标文件,并且您的功能还可以,但是我必须手动进行许多更改。

使用此坐标的Javascript代码是

            function initialize() 
                {   
                    var hr = new XMLHttpRequest();
                    hr.open("GET", "mylist.json", true);
                    hr.setRequestHeader("Content-type", "application/json", true);

                    var la, lo ;        

                    hr.onreadystatechange = function()
                    {               
                        var map = new google.maps.Map(document.getElementById('mapa'), {
                        zoom: 12,       
                        center: new google.maps.LatLng(3.555, -76.29),      
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                         });             
                        var infowindow = new google.maps.InfoWindow();
                        var marker, i;
                        var pathCoordinates = new google.maps.MVCArray();       
                        var arr = [];

                        if(hr.readyState == 4 && hr.status == 200)
                        {
                            var data = JSON.parse(hr.responseText);         
                            for(var obj in data)
                            {                       
                                    la =  data[obj].a;
                                    lo =  data[obj].o;                                              
                              marker = new google.maps.Marker({
                              position: new google.maps.LatLng( la , lo),
                              map: map});                
                            }                   
                        }
                    } 
                    hr.send(null);  
                }

您的问题对我来说并不十分清楚,但是如果您尝试解析第一个结构,则可能是

var data = JSON.parse(hr.responseText).coordinates;
data.forEach(function(pt) {
    la = pt[0];
    lo = pt[1];
    // ...
});

您可以使用map / reduce函数来解析您的对象:

 var coords = { "coordinates": [ [3.562251301440316, -76.2809944152832], [3.54117750673122, -76.28803253173828], [3.5488874874187673, -76.31258010864258], [3.5643072556238033, -76.3139533996582], [3.569104464176614, -76.29936218261719], [3.565335230992449, -76.2894058227539], [3.562593960789916, -76.28219604492188] ] } var obj = coords.coordinates.map(function(item, idx) { return { "a": item[0], "o": item[1] } }).reduce(function(previousValue, currentValue, index, vector){ previousValue["u" + (index+1)] = currentValue return previousValue; }, {}); console.log(obj) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM