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

如何让jq将类JSON中的None、True识别为字符串?

让jq将近似JSON中的None/True视为字符串的方法

你的工具输出的是类Python字典格式的内容,而非标准JSON:

{"acquired": None,
 "avail": True,
 "cls": "NetworkService",
 "params": {"address": "192.168.7.193", "password": "root", "username": "root"}}

以下是两种无需逐个替换关键词的解决方案:

方法一:用Python预处理(最稳妥)

利用Python的ast.literal_eval可以直接解析这种类字典格式,再将指定字面量转为字符串后输出标准JSON,让jq正常处理:

python3 -c '
import ast, json
def convert_literals(obj):
    if isinstance(obj, dict):
        return {k: convert_literals(v) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [convert_literals(i) for i in obj]
    elif obj is None or isinstance(obj, bool):
        return str(obj)
    return obj
data = ast.literal_eval(input())
print(json.dumps(convert_literals(data)))
' < 你的输入文件 | jq .

这个方法能自动处理所有Python风格的字面量(比如False),不管嵌套层级多深,都能把None、True、False转为对应的字符串,完全不用担心遗漏新的关键词。

方法二:纯jq文本处理(无需额外依赖)

如果环境里没有Python,可以用jq的字符串替换能力,精准匹配独立的关键词并转为字符串,再解析为JSON:

jq -R 'gsub("\b(None|True|False)\b"; "\"\1\"")' < 你的输入文件 | jq .

这里的\b是单词边界,只会替换独立的None/True/False,不会误改包含这些词的普通字符串(比如"TrueHost"不会被处理)。如果之后出现新的类似关键词,只要在正则括号里添加即可,比如(None|True|False|null)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:01:09