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

如何将JS对象字符串解析为Python列表?遇JSON解码错误且无法使用JS

解析JS对象字符串为Python列表的方法

你遇到的问题是因为这段JS对象字符串不符合严格的JSON规范,json.loads只能解析标准JSON,所以会报错。以下是两种可行的解决方法:

方法一:手动正则修正后用json.loads

通过正则替换把JS对象转换成标准JSON格式,再用Python内置的json模块解析:

import re
import json

# 你的原始JS字符串
js_str = """[{label: ' ', name: 'Confirmed', width: 30, formatter: 'checkbox'},{label: 'ID', name: 'ID', width: 100, key:true},{label: 'E-mail', name: 'F250275', width: null, formatter: clearText},{label: 'Agree', name: 'F250386', width: null, formatter: clearText},]"""

# 1. 给所有属性名添加双引号
fixed_str = re.sub(r'\b(\w+):', r'"$1":', js_str)
# 2. 将未加引号的clearText转为字符串
fixed_str = re.sub(r'\b(clearText)\b', r'"$1"', fixed_str)
# 3. 移除末尾多余的逗号
fixed_str = re.sub(r'},]', r'}]', fixed_str)

# 解析为Python列表
result = json.loads(fixed_str)
print(result)

方法二:使用第三方库直接解析非标准JSON

demjson库支持解析JS风格的对象(无需严格符合JSON规范),步骤如下:

  1. 安装库:
pip install demjson
  1. 解析代码:
import demjson

js_str = """[{label: ' ', name: 'Confirmed', width: 30, formatter: 'checkbox'},{label: 'ID', name: 'ID', width: 100, key:true},{label: 'E-mail', name: 'F250275', width: null, formatter: clearText},{label: 'Agree', name: 'F250386', width: null, formatter: clearText},]"""

result = demjson.decode(js_str)
print(result)

补充说明:json.loads报错的核心原因是JSON语法要求属性名必须用双引号包裹,且所有非数值/布尔/null的值必须是双引号字符串,而你的JS对象里属性名无引号、clearText是未加引号的标识符,不符合JSON规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:30:01