2016-09-08 1 views
-2

Ich habe einen REST-konformen Web-Service mit einer URL wie „http://myhost:5000/getname“ zurückzukehren einen JSON-String wie folgt zurück zu analysieren Rufen Sie den Webdienst auf, und analysieren Sie die zurückgegebene JSON-Zeichenfolge, um den Vor- und Nachnamen zu erhalten. Sie müssen in zwei Varianten gespeichert und ausgedruckt werden.Verwendung Shell-Skript json durch einen erholsamen Service

Ich bin neu in Shell Scripting, also würde jemand bitte Ihre Gedanken teilen? Vielen Dank!

+1

Verwenden 'curl' und' jq' verwenden. – redneb

+0

Danke. Aber jq muss auf meinem ubuntu installiert werden. Können wir einfach Shell-Scripting verwenden? – condor126

Antwort

1

beste Wette wäre, einen Blick haben keine json bewusst Tool zu verwenden. Allerdings ist hier eine Lösung mit awk und eval, später sollte so viel wie möglich vermieden werden.

Beispieleingabedatei:

cat file.json 
{"firstName": "john", "lastName": "doe"} 

Lösung:

eval $(awk 'BEGIN{FS=RS=","} {gsub(/{|}|"/,"");split($0,a,":");print a[1] "="a[2]} ' file.json | tr -d ' ') 

echo $firstName 
john 
echo $lastName 
doe 

OR tr und xargs

eval $(tr '[[:punct:]]' ' ' < file.json |tr -s ' ' |xargs -n2 |tr ' ' '=') 
echo $firstName 
john 
echo $lastName 
doe 
+0

Ich habe das erste versucht und es funktioniert. Vielen Dank! – condor126

+0

@ condor126 froh, dass es geholfen hat. –

2

Sie können bei jq

$ echo '{"firstName": "john", "lastName": "doe"}' | jq '.firstName, .lastName' 
"john" 
"doe" 
+0

Danke. Aber jq muss auf meinem ubuntu installiert werden. Können wir einfach Shell-Scripting verwenden? – condor126

+0

Ich empfehle, json (oder jede Art von strukturierten Daten wie HTML, XML, etc ...) mit einem dedizierten Tool zu analysieren. Die Verwendung von 'awk',' sed' oder anderen ist meiner Meinung nach keine gute Idee (vor allem, wenn Sie komplexere Datenextraktion durchführen wollen) – oliv

Verwandte Themen