Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换适用于Google Maps Api的JSON响应_Javascript_Google Maps - Fatal编程技术网

Javascript 转换适用于Google Maps Api的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

我的服务器向客户端发送一个响应,一个json数组

["{"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输入上添加双引号(如您在评论中所述)?