从这个数据
[{"lat":"-1.325416","lng":"36.669051"},
{"lat":"-1.392932","lng":"36.768752"},
{"lat":"-1.390505","lng":"36.810023"},
{"lat":"-1.448266","lng":"36.952769"},
{"lat":"-1.267033","lng":"37.094882"},
{"lat":"-1.214605","lng":"37.053978"},
{"lat":"-1.169516","lng":"36.895608"}]
我正在尝试创建一个看起来像这样的javascript对象。
var outerCoords =[
{lat: -1.325416, lng: 36.669051},
{lat: -1.392932, lng: 36.768752},
{lat: -1.390505, lng: 36.810023},
{lat: -1.448266, lng: 36.952769},
{lat: -1.267033, lng: 37.094882},
{lat: -1.214605, lng: 37.053978},
{lat: -1.169516, lng: 36.895608},
{lat: -1.244058, lng: 36.730391}
],
没有双引号的属性值。 我有第一个,我的json字符串得到一个字符串,然后从字符串中删除双引号,然后解析结果没有双引号。解析结果不会创建对象,它会返回一个字符串。如果你能帮助我,我会很感激。 这就是我在做什么。
var str= JSON.stringify(outercords1);
var x = str.replace (/"/g,'');
var obj= JSON.parse(x);
外线的价值是:
[{"lat":"-1.325416","lng":"36.669051"},{"lat":"-1.392932","lng":"36.768752"},{"lat":"-1.390505","lng":"36.810023"},{"lat":"-1.448266","lng":"36.952769"},{"lat":"-1.267033","lng":"37.094882"},{"lat":"-1.214605","lng":"37.053978"},{"lat":"-1.169516","lng":"36.895608"}]
答案 0 :(得分:2)
Stringified JSON引用了属性。这是强制性的。所以形式为
的javascript对象var outerCoords =[
{lat: -1.325416, lng: 36.669051},
{lat: -1.392932, lng: 36.768752},
{lat: -1.390505, lng: 36.810023},
{lat: -1.448266, lng: 36.952769},
{lat: -1.267033, lng: 37.094882},
{lat: -1.214605, lng: 37.053978},
{lat: -1.169516, lng: 36.895608},
{lat: -1.244058, lng: 36.730391}
],
将字符串化为
'[{"lat":-1.325416,"lng":36.669051},{"lat":-1.392932,"lng":36.768752},{"lat":-1.390505,"lng":36.810023},{"lat":-1.448266,"lng":36.952769},{"lat":-1.267033,"lng":37.094882},{"lat":-1.214605,"lng":37.053978},{"lat":-1.169516,"lng":36.895608},{"lat":-1.244058,"lng":36.730391}]'
删除引号会将其变为无效以解析为JSON,这就是您获取字符串的原因。
另一方面,执行
JSON.parse('[{"lat":-1.325416,"lng":36.669051},{"lat":-1.392932,"lng":36.768752},{"lat":-1.390505,"lng":36.810023},{"lat":-1.448266,"lng":36.952769},{"lat":-1.267033,"lng":37.094882},{"lat":-1.214605,"lng":37.053978},{"lat":-1.169516,"lng":36.895608},{"lat":-1.244058,"lng":36.730391}]');
会给你一个对象。你开始时提到的同一个对象。
对象属性始终作为字符串输出,因此将对象声明为
var outerCoords =[
{"lat": -1.325416, "lng": 36.669051},
{"lat": -1.392932, "lng": 36.768752},
{"lat": -1.390505, "lng": 36.810023},
{"lat": -1.448266, "lng": 36.952769},
{"lat": -1.267033, "lng": 37.094882},
{"lat": -1.214605, "lng": 37.053978},
{"lat": -1.169516, "lng": 36.895608},
{"lat": -1.244058, "lng": 36.730391}
];
与没有引号的声明相同。
答案 1 :(得分:0)
var outerCoords =[
{lat: -1.325416, lng: 36.669051},
{lat: -1.392932, lng: 36.768752},
{lat: -1.390505, lng: 36.810023},
{lat: -1.448266, lng: 36.952769},
{lat: -1.267033, lng: 37.094882},
{lat: -1.214605, lng: 37.053978},
{lat: -1.169516, lng: 36.895608},
{lat: -1.244058, lng: 36.730391}
]
var str= JSON.stringify(outerCoords);
//var x = str.replace (/"/g,'');
var obj= JSON.parse(str);
console.log(obj);

答案 2 :(得分:0)
我认为不要使用解决问题的stringify
来试试它。
答案 3 :(得分:0)
您可以迭代数组和对象,并将所有弦乐数字转换为数字。
根据JSON,密钥总是双引号。
Preview
var outerCoords = [{ "lat": "-1.325416", "lng": "36.669051" }, { "lat": "-1.392932", "lng": "36.768752" }, { "lat": "-1.390505", "lng": "36.810023" }, { "lat": "-1.448266", "lng": "36.952769" }, { "lat": "-1.267033", "lng": "37.094882" }, { "lat": "-1.214605", "lng": "37.053978" }, { "lat": "-1.169516", "lng": "36.895608" }];
outerCoords.forEach(function (o) {
Object.keys(o).forEach(function (k) {
if (isFinite(o[k])) {
o[k] = +o[k];
}
});
});
console.log(outerCoords);
答案 4 :(得分:0)
您可以JSON.parse使用自定义reviver
功能操作您的元素。
var outderCoords1=[{"lat":"-1.325416","lng":"36.669051"},
{"lat":"-1.392932","lng":"36.768752"}];
var outerCoords = JSON.parse(JSON.stringify(outderCoords1),
function(name, value) {
if(!(typeof value.replace === "undefined")){
var v= parseFloat(value.replace(/"/g, ""));
alert(typeof(v));
}
});