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

如何使用jq对JSON中各键对应的值进行截断缩写处理

jq实现JSON值超长截断方案

你可以直接使用如下jq命令实现需求,阈值n可自行调整:

# 示例中n=5,修改--argjson后的数字即可调整截断阈值
jq --argjson n 5 '
# 自定义截断函数
def truncate($max_len):
  tostring
  | if length > $max_len then .[:$max_len] + " ..." else . end;
# 遍历顶层所有键的值做处理
map_values(
  (tostring | length) as $str_len
  # 仅字符串长度超过阈值时截断,否则保留原始值和类型
  | if $str_len > $n then truncate($n) else . end
)' 你的JSON文件路径

逻辑说明

  • 用--argjson传入数字类型的阈值n,避免类型转换问题
  • 先计算每个值转成字符串后的长度,仅在超过阈值时才做转换截断,短值会保留原始类型(比如数字、布尔值不会被强行转成字符串)
  • 对于对象、数组等复合类型,会自动转成JSON字符串后再做截断,符合预览折叠的需求

效果示例

用你提供的测试JSON运行上述命令后,输出如下:

{
  "a": "hi",
  "b": 4213,
  "c": "23154 ...",
  "d": "a ver ...",
  "e": "{\n  \"x ..."
}

如果需要处理嵌套层级的所有值,只需要把上面的map_values改成递归遍历的写法即可,当前版本已经完全满足顶层键预览的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:06:04