J'obtiens ce genre de JSON
réponse d'une curl
commande:
[
{
"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": ""
}
]
Comment puis-je compter le nombre d'éléments dans le tableau (ici 2
), en utilisant Bash
ou une ligne de commande (par exemple underscore
)?
NPM
module oui. Sinon, non.Réponses:
Juste jeter une autre solution dans le mélange ...
Essayez
jq
, un processeur JSON en ligne de commande léger et flexible:Imprime la longueur du tableau d'objets.
la source
jq
code initial (.[]
) renvoie la longueur de chacunobject
dans le tableau racine, pendant que je recherche la longueur du tableau racine lui-même. Besoin de corriger.
jq '.[] | length' file.json
jq
est. +1jq map_values(length) file.json
. Cela vous donnera également les clés.-s
ou--slurp
, qui les rassemble dans un tableau lors de la lecture:jq -s length file.json
L'expression la plus courte est
curl 'http://…' | jq length
la source
Une solution simple consiste à installer la
jshon
bibliothèque:la source
Vous pouvez également utiliser jq pour suivre le tableau dans le json renvoyé, puis le diriger vers un deuxième
jq
appel pour obtenir sa longueur. Supposons que ce soit dans une propriété appeléerecords
, comme{"records":[...]}
.$ curl https://my-source-of-json.com/list | jq -r '.records' | jq length 2 $
la source