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

Apache Superset 2.1.0 SQL Lab JSON列显示单引号问题咨询

Apache Superset 2.1.0 SQL Lab JSON列显示单引号问题排查与解决

问题背景

升级到Apache Superset 2.1.0后,SQL Lab执行查询时,JSON列的键值对以单引号显示,不符合标准JSON规范,无法直接复制使用。但通过数据库直接查询确认,存储的是标准双引号格式的JSON。

原因分析

这并非数据库存储问题,而是Superset 2.x版本调整了SQL Lab结果的JSON渲染逻辑:默认使用Python的repr()方法处理JSON对象,导致输出单引号格式的非标准JSON,而非此前版本使用的标准JSON序列化方式。

解决方法

1. 配置项修复(推荐)

修改Superset的配置文件superset_config.py,添加/调整以下配置,强制使用标准JSON序列化:

# 让SQL Lab中的JSON列输出标准双引号格式
SQLLAB_JSON_FORMAT = 'json'

如果上述配置不生效,可尝试自定义结果序列化函数:

from superset.utils.core import json_dumps

def custom_json_serializer(obj):
    return json_dumps(obj, ensure_ascii=False)

RESULTS_BACKEND_JSON_DUMPS = custom_json_serializer

修改完成后重启Superset服务即可生效。

2. 临时查询语句调整(无需改配置)

针对PostgreSQL的jsonb类型,可在查询时直接将JSON列转换为标准字符串:

SELECT source_id, json::text AS json, created_at, updated_at FROM abc;

查询结果会直接显示双引号的标准JSON字符串,可直接复制使用。

3. 关于是否为bug

这属于Superset 2.x版本的行为变化,并非严格意义上的bug,但确实不符合用户对标准JSON格式的预期,社区已有不少类似反馈,后续版本可能会优化该逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:17:04