如何在JavaScript中将Python的str类型数据转换为字典?
解决Python通过Eel传数据到JS后无法正常访问的问题
嘿,我来帮你搞定这个事儿!首先得指出你一开始的小问题:你写的Python里的d1 = ["id":"hajdgrwe2123", "name":"john law", "age":"95"]是语法错误哦——列表(方括号)不能装键值对,得用字典(大括号)才行,而且如果是字符串形式的话,也得是标准JSON格式。
第一步:Python端先把数据弄对再传递
Eel本身对Python和JS之间的数据传递支持很好,分两种省心的方式:
方式一:直接传Python字典(最推荐)
Eel会自动把Python字典转成JS能识别的对象,不用自己折腾JSON:
import eel # 先把数据改成正确的字典格式 d1 = {"id":"hajdgrwe2123", "name":"john law", "age":"95"} # 暴露一个给JS调用的函数 @eel.expose def get_user_data(): return d1 # 初始化Eel,假设你的前端文件在web文件夹里 eel.init('web') eel.start('index.html', block=True)
方式二:手动转成JSON字符串传递
如果你必须传字符串(比如某些特殊场景),记得用Python的json模块转成标准JSON字符串,避免格式错误:
import eel import json d1 = {"id":"hajdgrwe2123", "name":"john law", "age":"95"} # 转成符合JSON规范的字符串 json_str = json.dumps(d1) @eel.expose def get_user_data(): return json_str
第二步:JS端接收并访问数据
根据Python端的传递方式,JS的处理也不一样:
如果是直接传Python字典
这时候JS拿到的直接就是一个对象,直接用data["id"]或者data.id就能访问,超简单:
// 调用Python暴露的函数拿数据 eel.get_user_data()(function(userData) { console.log(userData["id"]); // 这里就能输出 hajdgrwe2123 console.log(userData.name); // 用点语法也可以 });
如果是传JSON字符串
要是你之前用JSON.parse()失败,大概率是因为Python传过来的字符串格式不对(比如你一开始写的方括号列表就不符合JSON规范)。现在用正确的JSON字符串的话,这样解析就没问题了:
eel.get_user_data()(function(jsonStr) { try { const userData = JSON.parse(jsonStr); console.log(userData["id"]); // 顺利拿到 hajdgrwe2123 } catch (err) { // 要是还失败,打印原始字符串看看哪里错了 console.error("解析JSON出错啦:", err); console.log("原始字符串是:", jsonStr); } });
几个容易踩坑的点
- 一定要确保Python里的原始数据格式正确:字典用大括号,JSON字符串的键必须是双引号(单引号在JSON里是不合法的)。
- 要是之前JSON解析失败,先把Python传过来的字符串打印出来看看,是不是格式有问题(比如多了逗号、用了单引号之类的)。
- 尽量用Eel自动序列化的方式,少手动转JSON,能省不少麻烦~
内容的提问来源于stack exchange,提问作者e.iluf
相关产品推荐
相关产品推荐

