我的JavaScript代码中有一个像这样的JSON结构
[{"id":10,"latitude":"49","longitude":"2","altitude":"construction","name":"sjiajnjdksaa","description":"jfis","urlidle":"asd","urlselected":"asd"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"}]
这是从如下的$.getJSON(serverUrl, function(data)
方法获得的。
var serverUrl = https://demo.blah.fgh/return.php?lat=20;
var jqxhr = $.getJSON(serverUrl, function(data) {
console.log(jqxhr.responseText);
但是,我需要迭代它们中的每一个并将每一行放入如下所示的对象中
//Loop Starts
var singlePoi = {
"id": poiData[i].id,
"latitude": parseFloat(poiData[i].latitude),
"longitude": parseFloat(poiData[i].longitude),
"altitude": parseFloat(poiData[i].altitude),
"title": poiData[i].name,
"description": poiData[i].description,
"urlidle": poiData[i].urlidle,
"urlselected": poiData[i].urlselected
};
// Now do operations with singlePoi
//Loop ends
使用jQuery,
$.each(pioData, function(i, v) {
v.latitude = parseFloat(v.latitude);
...
...
...
});
因为从本质上讲,您对对象数组所做的是改变每个属性的值类型。完成迭代后,您可以再次使用pioData
,根据您的需要进行修改。
你可以试试这个经典的javascript forEach
让你的Json结构
var data=[{"id":10,"latitude":"49","longitude":"2","altitude":"construction","name":"sjiajnjdksaa","description":"jfis","urlidle":"asd","urlselected":"asd"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"}];
//Loop Starts
data.forEach(function(poiData){
var singlePoi = {
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
};
// Now do operations with singlePoi
});
//Loop ends
如果您希望迭代返回并格式化对象,可以执行以下操作:
function formatReturn(data) {
var formattedData = [];
data.forEach( function(poiData) {
formattedData.push(
{
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
}
);
});
console.log(formattedData);
}
请注意,在这种情况下,您仍将拥有一个对象数组,但纬度,经度和高度属性将应用parseFloat。
如果您希望将所有行存储为对象中的属性,则可以执行以下操作:
function formatReturn(data) {
var formattedData = {};
data.forEach( function(poiData,index) {
formattedData["singlePoi_"+index] =
{
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
};
}
console.log(formattedData);
}
上面将把JSON返回中的每个项目存储为formattedData对象的新属性。