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

如何用纯jq实现保留一级键并将下层JSON转为转义字符串?

纯jq解决方案完全可行!

当然有纯jq的办法实现你要的效果,核心就是用jq内置的tojson函数,它能把JSON值直接序列化为带正确转义的JSON字符串。

具体命令

针对你的需求,只需要遍历所有一级键的值,判断如果是对象类型就转成JSON字符串,其他类型保持原样:

.[] |= if type == "object" then tojson else . end

验证示例

输入JSON:

{ "a": "1", "b": { "c": "2", "d": { "e": "3" } }, "f": "4" }

执行命令(假设输入存在input.json文件里):

jq '.[] |= if type == "object" then tojson else . end' input.json

输出结果:

{
  "a": "1",
  "b": "{\"c\":\"2\",\"d\":{\"e\":\"3\"}}",
  "f": "4"
}

额外说明

如果你的场景里一级键的值还有数组类型,也需要转成转义字符串的话,可以修改条件为:

.[] |= if type == "object" or type == "array" then tojson else . end

这样就能覆盖对象和数组两种嵌套结构的转换啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:34