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

AWS Lambda传递的Python字典如何转换为JS可用对象格式

解决方案

这个是Python后端对接JS前端的高频场景,绝大多数全栈开发者都遇到过,核心要先理清两个概念的差异:

标准JSON规范要求对象的键必须包裹双引号,而JS对象的键只要是合法标识符(字母、下划线、$开头,后续可以带数字)就可以省略引号,二者的语义是完全兼容的,不需要强制修改后端输出格式也能正常使用。

推荐方案:前端直接解析标准JSON

这是最稳妥、无风险的方案,不需要修改Lambda侧的代码:

  • Lambda侧正常用json.dumps(py_dict)返回标准JSON响应,设置正确的Content-Type: application/json响应头
  • 前端收到响应后直接调用JSON.parse()即可得到可正常操作的JS对象,不管键有没有包裹引号,你都可以用obj.x、obj.y的方式直接访问属性,和无引号键JS对象的使用体验完全一致。

示例代码:

// 前端请求示例
fetch('你的Lambda接口地址')
  .then(res => res.json()) // 内置方法自动完成JSON解析,等价于得到你要的js_obj
  .then(js_obj => {
    console.log(js_obj[0].x) // 输出hi,完全正常使用
  })

特殊场景方案:Python侧直接输出JS对象格式

如果你需要把数据直接嵌入HTML的<script>标签作为JS代码使用,不想走解析流程,可以用正则安全处理JSON输出:

import json
import re

py_dict = [{'x':"hi", 'y':1, 'z':2}]
json_str = json.dumps(py_dict)
# 正则仅匹配符合JS标识符规则的键,不会修改值内的引号
js_obj_str = re.sub(r'"([a-zA-Z_$][a-zA-Z0-9_$]*)":', r'\1:', json_str)
print(js_obj_str) # 输出: [{x:"hi", y:1, z:2}]

注意不要手动拼接字符串生成JS对象,会存在特殊字符转义漏洞,正则方案依赖json.dumps先完成所有特殊字符转义,再修改键的格式,安全性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:06:05