I have a JSON structure like this in my JavaScript code
[{"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"}]
This is obtained from a $.getJSON(serverUrl, function(data)
method like the follows.
var serverUrl = https://demo.blah.fgh/return.php?lat=20;
var jqxhr = $.getJSON(serverUrl, function(data) {
console.log(jqxhr.responseText);
However, I need to iterate through each one of them and get each row into an object like the follows
//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
Using jQuery,
$.each(pioData, function(i, v) {
v.latitude = parseFloat(v.latitude);
...
...
...
});
Because essentially, what you are doing to the array of objects is changing each attribute's value type. When you are done iterating, you can just use pioData
again, modified to your needs.
You can try this classical javascript forEach
lets your Json structure is
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
If you are looking to iterate through the return and format the objects, you can do something like this:
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);
}
Note that in this case you will still have an array of objects, but the latitude, longitude, and altitude attributes will have parseFloat applied to them.
If you are looking to store all of the rows as attributes in an object, you could do something like this:
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);
}
The above will store each item in the JSON return as a new attribute of the formattedData object.