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

如何在Python中从环境变量获取无多余转义的原始JSON字符串?

问题

在Bash中,我通过jq将JSON存入环境变量:

export FOO=$(curl ... | jq -Rs)

在Python中读取该变量:

import os
bar = os.environ["FOO"]

此时bar的内容类似{\\"this\\":\\"that\\"},使用json.loads(bar)会报错。尝试过repr、rf'{os.environ["FOO"]}'等方法,但找不到合适的内置方式去除多余斜杠,又不想直接替换斜杠,避免后续维护出现问题。

解决方案

从根源解决:修正Bash端命令

问题出在jq -Rs的参数上:-Rs会把输入内容作为单行字符串进行转义,导致JSON被当成普通字符串处理,存入环境变量时多了一层不必要的转义。

改用jq -c参数(将JSON压缩为单行),直接输出原始JSON结构:

export FOO=$(curl ... | jq -c)

之后在Python中直接解析即可:

import os
import json

data = json.loads(os.environ["FOO"])

无法修改Bash端时的处理方案

如果必须处理已存在的带转义的环境变量值,可以用ast.literal_eval安全解析转义,再解析JSON:

import os
import json
import ast

bar = os.environ["FOO"]
# 先解析转义字符串,还原为原始JSON文本
raw_json = ast.literal_eval(f'"{bar}"')
# 解析JSON
data = json.loads(raw_json)

ast.literal_eval会正确处理字符串中的转义序列,不会误删JSON本身合法的转义(比如JSON字符串内的\"),比直接全局替换斜杠更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:26:02