Я работаю с API карт Google и пытаюсь упорядочить массив точек, каждая из которых имеет широту и долготу.То, что я хочу сделать, это упорядочить данные и сохранить их в базе данных, чтобы их можно было извлечь позже.Проблема в том, что из-за того, как Google Maps хранит и использует данные, результат JSON.stringify
иногда бывает странно случайным.Например, иногда данные выглядят так:
[{"Na":35.99663,"Oa":-78.94982},
{"Na":35.996370000000006,"Oa":-78.94914},
{"Na":35.99595,"Oa":-78.94833000000001},...]
А иногда точно такие же данные выглядят так:
[{"Ia":35.99663,"Ja":-78.94982},
{"Ia":35.996370000000006,"Ja":-78.94914},
{"Ia":35.99595,"Ja":-78.94833000000001},...]
На самом деле я видел около десяти различных вариантов.Это вызывает много проблем, когда я сохраняю строковые данные в базе данных и получаю их, потому что я никогда не знаю, какой формат ожидать.Я хочу заменить ключи так, чтобы данные выглядели примерно так:
[{"lat":35.99663,"lon":-78.94982},
{"lat":35.996370000000006,"lon":-78.94914},
{"lat":35.99595,"lon":-78.94833000000001},...]
Я уже написал код, чтобы выяснить, какие случайные буквы используются в Google Maps.С этой информацией я хочу заменить каждое вхождение этих случайных букв на «лат» или «лон».Я надеюсь использовать метод замены, например, так ...
function formatData(data) {
//data is an object that I want to stringify
//this testPoint and testString help us figure out which letters google is using this time around
var testPoint = new google.maps.LatLng(23,45);
var testString = JSON.stringify(testPoint);
var strangeLat = testString.substring(2,4); //this is a random two character string which represents latitude in the stringified data
var strangeLon = testString.substring(10,12); //this is a random two character string which represents longitude in the stringified data
//stringify the data and replace all occurences of the random letters with lat and lon
var formattedData = JSON.stringify(data, function(key,value) {
//do something here to replace the keys
});
return formattedData;
}
Я знаю, как заменить значения с помощью функции замены, но я не могу понять, как заменить ключи.Я искал вокруг и нашел несколько подобных случаев онлайн: JSON.stringify, изменил регистр ключа и Заменил ключи JSON в javascript .Однако у меня были проблемы с их пониманием, и я не смог найти решение, соответствующее моим потребностям.
Заранее спасибо за любую помощь или предложения!
Обновление!
Спасибо всем.Я смог найти решение, используя комбинацию ваших предложений.Вот как это выглядит:
function formatData(data) {
//data is an array of many LatLng objects
newData = [];
for(var i = 0; i < data.length; i++) {
var obj = new Object();
obj['lat'] = data[i].lat();
obj['lon'] = data[i].lng();
newData.push(obj);
}
return JSON.stringify(newData);
}