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
相关产品推荐
相关产品推荐

