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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:57:47