如何使用命令行计算JSON对象中的条目?

093gszye  于 2023-02-26  发布在  其他
关注(0)|答案(7)|浏览(151)

我从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)中的项数?

t5zmwmid

t5zmwmid1#

只是把另一个解决方案放在一起...
试试jq,一个轻量级的、灵活的命令行JSON处理器:

jq length /tmp/test.json

打印对象数组的长度。

13z8s7eq

13z8s7eq2#

最短表达式为

curl 'http://…' | jq length
t8e9dugd

t8e9dugd3#

你也可以使用jq来追踪返回的json中的数组,然后将其传输到一个 secondjq调用中来获取其长度,假设它位于一个名为records的属性中,比如{"records":[...]}

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

m528fe3b4#

如果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

(You必须下载jq才能使用此解决方案)

0x6upsns

0x6upsns5#

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

jshon -l < /tmp/test.json
2
mzmfm0qo

mzmfm0qo6#

试试qic。它的工作原理和jq/jello一样。qic也支持交互模式。
猫试验. json|qic“透镜(_)”
https://walkerever.github.io/qic/

hrysbysz

hrysbysz7#

假设以下结构:
(存储在名为json的变量中)

{
    "results": [
        { "id": 1 }
        { "id": 2 }
    ]

}

如果您想计算results数组中有多少个,则命令为:

$json | jq '.results | length'

相关问题