JSON字符串转对象问题。

新手上路,请多包涵

从接口返回了一段很奇葩的数据,想转换成数组使用,但是自己水平有限,尝试过JSON.parse和字符串的截取,但是最终未能解决该问题,希望诸位能帮忙解答此问题,谢谢!

返回的数据如下:

"[{"lng":121.580538,"lat":31.19932},{"lng":121.580919,"lat":31.199405},{"lng":121.58107,"lat":31.198751},{"lng":121.580683,"lat":31.198682}]"

期望的结果: 转换成数组

麻烦各位帮忙解决一下,谢谢!

阅读 3k
2 个回答

如果是返回的数据直接是这样的话, 你可以尝试把第一个双引号和最后一个双引号去掉, 然后再解析。

<script>
            var json_str = '"[{"lng":121.580538,"lat":31.19932},{"lng":121.580919,"lat":31.199405},{"lng":121.58107,"lat":31.198751},{"lng":121.580683,"lat":31.198682}]"';
            
            // 取出两边双引号
            json_str = json_str.replace(/(^\")|(\"*$)/g, "");;

            var json_obj = JSON.parse(json_str);

            console.log(json_obj);
        </script>

图片描述

你这数据有问题吧,里面的双引号都没转义?这能用?我试了半天一直在报错,
返回的数据应该是这样才对吧?

"[{\"lng\":121.580538,\"lat\":31.19932},{\"lng\":121.580919,\"lat\":31.199405},{\"lng\":121.58107,\"lat\":31.198751},{\"lng\":121.580683,\"lat\":31.198682}]"

如果数据真像你问题的那样,你跟这样的后台合作要小心点了,指不定哪天就被坑死了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题