You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何将Python传入的字典格式字符串转换为对象

问题根本原因

你拿到的字符串不是标准JSON格式:

  • 标准JSON要求所有字符串(包括对象的键、字符串值)必须使用双引号包裹,而你收到的字符串里用的是单引号
  • Python直接把字典str()序列化输出的格式本身就不符合JSON规范,所以JSON.parse才会抛出单引号的语法错误。

最优解决方案:修改Python端序列化逻辑

不要直接把Python字典转成字符串输出,用Python内置的json模块序列化,输出标准JSON格式:

import json

# 假设你的字典是url_map
url_map = {
    'AMARAJABAT': 'https://kite.zerodha.com/chart/ext/tvc/NFO-OPT/AMARAJABAT21SEP710CE/15738370',
    'ASIANPAINT': 'https://kite.zerodha.com/chart/ext/tvc/NFO-OPT/ASIANPAINT21SEP3300CE/16292866',
    'ASTRAL': 'https://kite.zerodha.com/chart/ext/tvc/NFO-OPT/ASTRAL21SEP2100CE/15201026',
    'AXISBANK': 'https://kite.zerodha.com/chart/ext/tvc/NFO-OPT/AXISBANK21SEP800CE/16441858'
}
# 输出标准JSON,不要用str(url_map)
output_str = json.dumps(url_map)

这样前端拿到的就是标准JSON字符串,直接用JSON.parse就能正常解析。

临时兼容方案:前端手动替换单引号

如果实在没法改Python端的输出,你可以先把字符串里的所有单引号替换成双引号,再调用JSON.parse:

eventSource.addEventListener("online", function(e) {
    let data = e.data
    console.log(data)              
    console.log(typeof(data))      
    // 先替换所有单引号为双引号,再解析
    let formattedData = data.replace(/'/g, '"')
    let obj = JSON.parse(formattedData)
    console.log(obj)    
}, true)

注意:这个方案仅适用于你的字符串内容里本身不包含单引号的场景,如果你的URL或者键里有单引号,替换会导致新的语法错误,所以优先选择修改Python端序列化逻辑的方案。

内容的提问来源于stack exchange,提问作者viraj mane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:57:01