[英]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.