Подтвердить что ты не робот

Как подсчитать элементы в объекте JSON с помощью командной строки?

Я получаю такой ответ 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)?

4b9b3361

Ответ 1

Просто выбросив другое решение в микс...

Попробуйте jq, легкий и гибкий процессор JSON с командной строкой:

jq '. | length' /tmp/test.json

Печать длины массива объектов.

Ответ 2

Самое короткое выражение:

curl 'http://…' | jq length

Ответ 3

Возможно, вы можете продолжать подсчет с помощью awk:

$ awk '/{/ {d++} /}/ {d--} /{/ && d==1 {count++} END{print count}' file
2
  • /{/ {d++}, если найдено {, добавьте переменную глубины.
  • /}/ {d--}, если найдено }, уменьшите значение переменной глубины.
  • /{/ && d==1 {count++}, если глубина равна 1, и она найдет {, затем добавьте совпадение в счетчике.
  • END{print count} распечатать результат.

Ответ 4

Простым решением является установка jshon:

jshon -l < /tmp/test.json
2