2015-08-10 7 views
6

Na przykład chcę wyodrębnić wartości z klucza, ale ten klucz czasami zawiera obiekt (mam na myśli tylko jedną wartość) lub czasami zawiera tablicę (mam na myśli wartości wielokrotności). HOw sprawdź, czy jest tablica lub istnieje obiekt? dzięki.Jak sprawdzić, czy w jq jest tablica lub obiekt?

Odpowiedz

9

pomocą type funkcję:

type
Funkcja typu zwraca typ jej argumentu jako ciąg, który jest jednym z zerową, wartości logicznej numer, łańcuch, tablicy lub obiektu.

Przykład 1:

echo '[0, false, [], {}, null, "hello"]' | jq 'map(type)' 
[ 
    "number", 
    "boolean", 
    "array", 
    "object", 
    "null", 
    "string" 
] 

Przykład 2:

echo '[0,1]' | jq 'if type=="array" then "yes" else "no" end' 
"yes" 

Przykład 3:

echo '{"0":0,"1":1}' | jq 'if type=="array" then "yes" else "no" end' 
"no" 
+0

Hi @Hans można należy podać przykład dla układu elementów również . [{"foo": null, "bar": "mniej interesujące dane"}, {"foo": "null", "bar": "mniej interesujące dane"}, {"foo": ["a", "b"], "bar": "mniej interesujące dane"}]. Aby sprawdzić, czy foo jest tablicą lub łańcuchem znaków. Używam poniżej jq commond w jqPlay . [] | {"Result": if .foo == null then [] end} – devanathan