tamaño recorrer objeto los elementos contar array json bash curl

objeto - recorrer json javascript



¿Cómo contar elementos en el objeto JSON usando la línea de comando? (4)

Recibo este tipo de respuesta JSON de un comando 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": "" } ]

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


La expresión más corta es

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


Quizás puedas seguir contando con awk :

$ awk ''/{/ {d++} /}/ {d--} /{/ && d==1 {count++} END{print count}'' file 2

  • /{/ {d++} si { se encuentra, incrementa la variable de profundidad.
  • /}/ {d--} if } , disminuya la variable de profundidad.
  • /{/ && d==1 {count++} si la profundidad es 1 y encuentra un { , luego agrega una coincidencia en el contador.
  • END{print count} imprime el resultado.

Solo lanzando otra solución en la mezcla ...

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

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

Imprime la longitud de la matriz de objetos.


Una solución simple es instalar la biblioteca jshon :

jshon -l < /tmp/test.json 2