我从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": ""
  }
]

我怎么能计算在数组(这里2)项目的数量,使用Bash或命令行(例如下划线)?


当前回答

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

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

其他回答

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

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

油漆测试。json | qic”len (_)

https://walkerever.github.io/qic/

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

jshon -l < /tmp/test.json
2

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

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

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

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

jq length /tmp/test.json

打印对象数组的长度。