2016-06-13 5 views
0

Ich arbeite in einfachen Bash-Skript, um JSON-Wert mit CURL und Parse mit JQ zu erhalten. Script ich bin mit:Wie extrahiert man nur einen Elementtyp in JQ aus der Ausgabe von CURL in BASH-Skript?

var=$(curl -X GET -k -H "SEC: xxxxxx" 'https://localhost/api/reference_data/sets/malopid?fields=data(value)' | jq '.[]') 
echo $var; 

Ausgabe von curl ist:

[ 
    { 
    "value": "11.945403842773683082" 
    }, 
    { 
    "value": "11.-4947520229339316351" 
    }, 
    { 
    "value": "11.-5919145046027777143" 
    } 
] 

Aber ich erwarte OP wie unten:

11.945403842773683082 
11.945403842773683082 
11.945403842773683082 

Ist es möglich, dies zu tun.? Mit diesen nos werde ich eine andere API abfragen. Bitte hilf mir mit Logik? Bitte helfen Sie mir dabei.

+0

Was ist das Problem? Die API gibt ein JSON-Objekt zurück und Sie möchten ... eine Liste? Einfach durch das Array gehen und Werte in ein anderes Array setzen? – Eric

Antwort

0

Ich erwarte Ihre Dummy-Ausgabe falsch ist, und Sie wollen eigentlich das, was unten aufgeführt ist:

jq '.[].value' -r <<< '[ 
    { 
    "value": "11.945403842773683082" 
    }, 
    { 
    "value": "11.-4947520229339316351" 
    }, 
    { 
    "value": "11.-5919145046027777143" 
    } 
]' 

Ausgang ist:

11.945403842773683082 
11.-4947520229339316351 
11.-5919145046027777143 

--raw-output/-r:
Mit dieser Option, wenn Das Ergebnis des Filters ist ein String, der direkt in die Standardausgabe geschrieben wird und nicht als JSON-String mit Anführungszeichen formatiert wird. Dies kann nützlich sein, um JQ-Filter mit Nicht-JSON-basierten Systemen in Verbindung zu bringen.

Verwandte Themen