2016-09-08 1 views
0

Ich erhalte Antwort aus dem unter Befehl in json-Format in .sh Datei (mit Shell-Skript) zu erhalten:Wie json Datenwert um saperate Variable mit Shell-Skript

**curl https://api.flipkart.net/sellers/skus/$col1/listings -H "Content-Type: application/json" -H "Authorization: Bearer $value"** 

Hier die Antwort ich bin immer:

{"listingId":"LSMSW","skuId":"M7489","fsn":"ACCCQD","attributeValues":{"actual_stock_count":"1","mrp":"199","seller_listing_state":"current","procurement_sla":"2","zonal_shipping_charge":"0","stock_count":"10","local_shipping_charge":"0","listing_status":"ACTIVE","max_order_quantity_allowed":"3","fulfilled_by":"seller","fk_release_date":"2016-08-29 10:00:08","selling_price":"529","inventory_count":"10","national_shipping_charge":"0","sku_id":"M7489"},"listingValidations":null} 

Jetzt möchte ich alle den Wert in getrennten variablen zur Wiederverwendung extrahieren wie:

LISTINGID = 'Auflistung id-Wert'

SKUID = 'skuId Wert'

und viele mehr

Ist jemand wissen, die Antwort bitte Kommentar mit Erklärung.

Vielen Dank im Voraus

+0

Da der JSON mindestens einen Knoten 'attributeValues' enthält, der andere Daten enthält, die beim Parsen mit einem Shell-Skript eine Reihe von Problemen verursachen, ist es nicht akzeptabel, eine Skriptsprache wie Python zu verwenden und die Ergebnisse dann zu exportieren Umgebungsvariablen? – glennstar

+0

Ich benutze Shell-Skript. dann, wie kann ich json antwort./ – Urvashi

+0

Nein .Ich benutze dies, aber es zeigt Fehlgeschlagen Schreiben Körper – Urvashi

Antwort

0

bin ich von irgendwelchen bash json Parser nicht bekannt. Ich würde mit Python oder PHP gehen und die Json-Zeichenfolge in einer dieser Sprachen analysieren und Werte von dort exportieren. In PHP gibt es die putenv() Methode.

Viel Glück!

Edit: prüfen Parsing JSON with Unix tools

+0

'jq' kommt als das richtige Werkzeug für den Job in den Sinn. –

0

Hier ist eine Lösung mit jq. Wenn data.json die Beispieldaten enthält dann die folgenden Schlagindex

#!/bin/bash 
jq -M -r ' 
     .listingId 
    , .skuId 
    , .attributeValues.mrp 
' data.json | \ 
while read -r listingId 
     read -r skuId 
     read -r mrp; do 
    echo "$listingId $skuId $mrp" 
done 

produziert

LSMSW M7489 199 

Der jq Befehl in dem Skript aus den angegebenen Attributen in separaten Zeilen schreibt, die in bash Variablen durch die sukzessive read -r gelesen Befehle. Es sollte klar sein, wie man dies erweitert oder modifiziert, um Ihre Anforderungen zu erfüllen - die primäre Einschränkung ist, dass für jede Zeile, die von jq geschrieben wird, eine entsprechende read -r sein sollte.

Verwandte Themen