【发布时间】:2011-08-24 19:29:41
【问题描述】:
我正在使用谷歌地图 API 并尝试将一组点串起来,每个点都有一个纬度和经度。我想要做的是对数据进行字符串化并将其存储在数据库中,以便以后可以检索到。问题在于,由于 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},...]
我已经编写了代码来确定谷歌地图正在使用哪些随机字母。有了这些信息,我想用“lat”或“lon”替换这些随机字母的每个出现。我希望使用这样的替换方法...
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, change the case of the key和Replace keys JSON in 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);
}
【问题讨论】:
标签: javascript json google-maps