Javascript 转换适用于Google Maps Api的JSON响应
我的服务器向客户端发送一个响应,一个json数组Javascript 转换适用于Google Maps Api的JSON响应,javascript,google-maps,Javascript,Google Maps,我的服务器向客户端发送一个响应,一个json数组 ["{"lat":27.4924,"lon":77.6737}", "{"lat":27.4924,"lon":77.6737}"] 首先,我需要用lng替换lon属性(因为googlemapsapi不接受lon作为属性),然后我需要删除数组中每个元素的外部双引号。我有点困惑,我不知道怎么处理 导致JSON.parse抛出错误(JSON.parse中出现意外标记) 我不需要代码,任何建议都将不胜感激。谢谢 这是我的服务器请求Api functi
["{"lat":27.4924,"lon":77.6737}", "{"lat":27.4924,"lon":77.6737}"]
首先,我需要用lng替换lon属性(因为googlemapsapi不接受lon作为属性),然后我需要删除数组中每个元素的外部双引号。我有点困惑,我不知道怎么处理
导致JSON.parse抛出错误(JSON.parse中出现意外标记)
我不需要代码,任何建议都将不胜感激。谢谢
这是我的服务器请求Api
function request (array){
let risposte = [];
for (i=0; i<array.length;i++){
var Http = new XMLHttpRequest();
var url = "http://ip-api.com/json/" + array[i]+"?fields=lat,lon";
Http.onreadystatechange = function () {
if (Http.readyState ==4){
if(Http.status == 200){
console.log("qui" + i);
console.log("Risposta" + Http.responseText);
risposte.push(Http.responseText);
}
if (Http.status==400){
console.log("servizio momoentanamente non disponibile ");
}
}
};
Http.open("GET",url,false);
Http.send();
}
console.log("finito");
return risposte;
}
函数请求(数组){
让risposte=[];
对于(i=0;i我建议不要按原样修改字符串,而是对其进行解析-从解析的值(上面的注释)创建json。或者,对于脏的解决方案,您可以删除所有引号,并进行字符串替换-这将是有效的json:
var cleaned = yourJson.Replace("\"", string.Empty).Replace("lon", "lng");
但我觉得这是不对的!我建议不要按原样修改字符串,而是对其进行解析—从解析后的值创建json。看起来您在服务器的响应中以字符串形式接收数组。理想的做法是在服务器端进行更改以正确发送响应,或者如果无法修改,则可能需要让您自己的实用程序将其转换为Google Map输入格式第三方Api对我的服务器的响应不带双引号,因此是有效的Json,但我的服务器对我的客户端的响应具有相同的数据,但为数组的每个元素添加了双引号,因此在这种情况下,它不是有效的jsonHi@FedericoFioravanti您可以共享您使用的代码吗e用于绕过从第三方API到客户端的数据。也许这是一个很好的方法来修复他们的响应,从而减少客户端的处理。@FedericoFioravanti-为什么您的服务器在已经有效的JSON输入上添加双引号(如您在评论中所述)?