追梦小狂魔 2021-12-11 12:13 采纳率: 16.7%
浏览 122
已结题

js使用接收django返回的json里面有不定个数个单双引号,出现JSON.parse报错

问题遇到的现象和发生背景

这是后端django发送的数据,xml_list是数组,里面存的字符串,数组里面的字符串可能存在不定个数的单引号或者双引号

问题相关代码,请勿粘贴截图

data={

            'status':200,
            'filename': file_name,
            'appid':appid,
            'key':appidkey,
            'from':myfrom,
            'to':to,
            'text_list':xml_list,


        }
   return render(request,"transprocess.html",{'data':json.dumps(data),"trans_count": trans_count})

前端接收

var d = '{{ data | safe}}';
        // console.log(JSON.parse(d));
        data = JSON.parse(d);

在这里就报错了,没法解析

运行结果及报错内容

text_list只截取了一个内容,这一个内容出现了两个“” "11011.",然后就报错了
{"status": 200, "filename": "p111-book-huangbin__katsunari-okamoto-fundamentals_of_op_74-175_30-59_1-5-auto-zh.docx", "appid": "20210106000664590", "key": "lBy1rXG61iBcVfiIEsNd", "from": "auto", "to": "zh", "text_list": ["Figure Several pulse waveforms with PCM code of "11011." (a) Input pulse waveform, (b) output pulse waveform after of the fiber with , and (c) output pulse after propagation."]}

img

我的解答思路和尝试过的方法

我尝试在后端把额外的“”变为中文的,这样虽然部分可以,但是还有其它问题,并不是个好方案,列表内容在python里面没问题,存在不定个数的单引号双引号,在js解析就会出问题

我想要达到的结果

能拿到所有的数据就行了

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-12-11 12:32
    关注
    明白了,由于d是字符串,发到客户端后\"是在的,但是对于js而言由于字符串扩起的的是单引号
    实际对\"转义无效,还是一个双引号,应该转成\\"这种格式,对\双转义。
    
    

    img

    有2种解决办法,推荐第二种
    1)在后台替换下,一个\变为2个\,但是会有bug如果内容包含单引号的话会导致前端js变量d字符串不闭合出错

    return render(request,"transprocess.html",{'data':json.dumps(data).replace('\\','\\\\'),"trans_count": trans_count})
    

    2,不需要替换,去掉前端d变量字符串引号,这样d直接为对象,不需要JSON.parse,这个也没有第一种的bug问题。

            <script>
                var d = {{ data | safe}};//可以直接输出内容到script块,这样d就是json对象,不需要再parse
            </script>
    

    有帮助麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月11日
  • 修改了问题 12月11日
  • 修改了问题 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题