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

使用eel时,如何在JavaScript中提取JSON指定字段并赋值变量?

嘿,我看到你在这里遇到了一个小误区——其实你根本不需要把传入的a转成JSON字符串!Eel会自动帮你把Python的字典转换成JavaScript的原生对象,所以直接用对象访问语法就行,不用多此一举转成字符串~

解决方法:直接操作JS原生对象

首先,先修正你的JavaScript接收函数,去掉JSON.stringify(a)这一步,因为Eel已经把Python传递的字典转成了JS对象:

eel.expose(my_javascript_function);
function my_javascript_function(a) {
  // 现在a已经是一个JS对象,不是字符串!
  console.log(a); // 你可以在浏览器控制台看到这个对象的结构,方便调试
}

接下来分两种场景处理你的需求:

1. 提取顶层键(比如"TEST"或"Nik")到变量

如果你想把顶层的键名赋值给变量,有几种方式:

  • 直接指定键名(适合已知目标键的情况):
    // 把"TEST"赋值给变量
    var topKey = "TEST";
    // 或者把"Nik"赋值给变量
    var anotherTopKey = "Nik";
    
  • 如果想获取所有顶层键,用Object.keys()方法:
    // 获取所有顶层键,返回一个数组 ["TEST", "Nik"]
    var allTopKeys = Object.keys(a);
    // 可以取第一个键赋值给变量
    var firstTopKey = allTopKeys[0];
    

2. 访问特定分类下的内容

有两种语法可以访问对象的属性,效果完全一致:

  • 点语法(适合已知键名、且键名无特殊字符的情况):
    // 获取TEST分类下的name
    var testName = a.TEST.name;
    // 获取Nik分类下的telephone
    var nikTelephone = a.Nik.telephone;
    
  • 方括号语法(适合键名存在变量里,或者键名包含特殊字符的情况):
    var targetKey = "TEST";
    // 用变量访问分类
    var testEmail = a[targetKey].email;
    // 直接用字符串访问也可以
    var nikName = a["Nik"].name;
    

完整示例代码

把这些逻辑整合起来,你的JS函数可以写成这样:

eel.expose(my_javascript_function);
function my_javascript_function(a) {
  // 提取顶层键"TEST"到变量
  var targetCategory = "TEST";
  
  // 访问该分类下的name和email
  var categoryName = a[targetCategory].name;
  var categoryEmail = a[targetCategory].email;
  
  // 把结果显示到页面
  document.getElementById("demo").innerHTML = 
    `分类${targetCategory}的名称:${categoryName},邮箱:${categoryEmail}`;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:51:55