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

时间:2014-01-24 13:47:20

标签: json bash curl jq

我从JSON命令收到此类curl回复:

[
  {
    "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)计算数组中的项目数(此处为underscore)?

5 个答案:

答案 0 :(得分:301)

只是在混合中抛出另一种解决方案......

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

jq length /tmp/test.json

打印对象数组的长度。

答案 1 :(得分:37)

最短的表达是

curl 'http://…' | jq length

答案 2 :(得分:3)

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

jshon -l < /tmp/test.json
2

答案 3 :(得分:2)

您还可以使用jq来跟踪返回的json中的数组,然后将其通过管道传输到 second class EditProfileForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) about_me = TextAreaField('About me', validators=[Length(min=0, max=140)]) submit = SubmitField('Submit') def __init__(self, original_username, *args, **kwargs): super(EditProfileForm, self).__init__(*args, **kwargs) self.original_username = original_username 调用中以获取其长度。假设它位于名为jq的属性中,例如records

{"records":[...]}

答案 4 :(得分:2)

试试qic。它的工作原理类似于 jq/jello。 qic 也支持交互模式。

cat test.json | qic "len(_)"

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