如何使用jq解析非数组格式的多个JSON对象并选取首个对象
你当前的输入是JSON流格式(多个独立JSON对象依次排列),jq默认会逐个处理每个输入对象,所以会依次输出两个对象。要取第一个对象可以用以下两种方案:
方法1:流式读取首个对象(性能更优,适合大体积输入)
搭配-n参数和input内置函数,仅读取第一个JSON对象后就终止处理,无需加载全部输入内容:
echo '{"p":2}{"q":3}' | jq -n 'input'
执行后输出结果为:
{"p":2}
方法2:全量读入数组后取首元素
使用--slurp(简写-s)参数将所有输入的JSON对象打包为一个数组,取下标为0的元素即可:
echo '{"p":2}{"q":3}' | jq -s '.[0]'
内容的提问来源于stack exchange,提问作者daparic
相关产品推荐
相关产品推荐

