如何计数在JSON对象使用命令行项目?

我从curl命令中得到这种JSON应答:

[
{
"cid": 49,
"pyn": "yi4",
"hans": "亿",
"hant": "億",
"tid": 68,
"l10n": "cent million",
"pid": 1,
"pos": "num",
"pos_txt": ""
},
{
"cid": 50,
"pyn": "yi4",
"hans": "亿",
"hant": "億",
"tid": 69,
"l10n": "100 millions",
"pid": 1,
"pos": "num",
"pos_txt": ""
}
]

如何使用Bash或命令行(例如underscore)计算数组中项目的数量(这里是2) ?

244036 次浏览

一个简单的解决方案是安装jshon库:

jshon -l < /tmp/test.json
2

只是在混合物中加入另一种溶液……

尝试jq,一个轻量级且灵活的命令行JSON处理器:

jq length /tmp/test.json

打印对象数组的长度。

最短的表达式是

curl 'http://…' | jq length

你也可以使用金桥在返回的json中追踪数组,然后将其输送到第二个 jq调用中以获取数组的长度。假设它在名为records的属性中,如{"records":[...]}

$ curl https://my-source-of-json.com/list | jq -r '.records | length'
2
$

qic试试。它像jq/jello一样工作。Qic支持交互模式。

猫测试。Json | qic "len(_)"

< a href = " https://walkerever.github。Io /qic/" rel="nofollow noreferrer">https://walkerever.github.io/qic/ .

如果JSON正在从文件中读取,请尝试此-

number_of_objects=`jq '. | length' json_file_name.json`
echo $number_of_objects

如果JSON数组在JSON中的键内,如下所示-

{
"fruits": [
"apples",
"oranges",
"pears"
]
}

试试这个——

number_of_objects=`jq '.fruits | length' json_file_name.json`
echo $number_of_objects

(你必须下载jq这个解决方案工作)