¿Cómo contar elementos en un objeto JSON usando la línea de comando?

Resuelto Édouard Lopez asked hace 10 años • 7 respuestas

Recibo este tipo de JSONrespuesta de un curlcomando:

[
  {
    "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": ""
  }
]

¿Cómo puedo contar el número de elementos en la matriz (aquí 2), usando Basho una línea de comando (por ejemplo underscore)?

Édouard Lopez avatar Jan 24 '14 20:01 Édouard Lopez
Aceptado

Simplemente estoy agregando otra solución a la mezcla...

Pruebe jq, un procesador JSON de línea de comandos ligero y flexible:

jq length /tmp/test.json

Imprime la longitud de la matriz de objetos.

Ken avatar Jan 25 '2014 19:01 Ken

También puede usar jq para rastrear la matriz dentro del json devuelto y luego canalizarla a una segunda jq llamada para obtener su longitud. Supongamos que estuviera en una propiedad llamada records, como {"records":[...]}.

$ curl https://my-source-of-json.com/list | jq -r '.records | length'
2
$ 
yuvilio avatar Sep 21 '2020 19:09 yuvilio

La expresión más corta es

curl 'http://…' | jq length
nikolay avatar Mar 31 '2016 10:03 nikolay