2017-02-14 2 views
0

Ich schreibe mein erstes Groovy-Skript, wo ich eine REST-API aufrufen.Kann Daten aus RESTClient Antwort nicht extrahieren

Ich habe folgendes Gespräch:

def client = new RESTClient('http://myServer:9000/api/resources/?format=json') 

Das zurückgibt:

[[msr:[[data:{"level":"OK"}]], creationDate:2017-02-14T16:44:11+0000, date:2017-02-14T16:46:39+0000, id:136]] 

Ich versuche, das Feld level, wie diese zu bekommen:

def level_value = client.get(path : 'msr/data/level') 

Allerdings, wenn ich Drucken Sie den Wert der erhaltenen Variablen:

println level_value.getData() 

Ich bekomme die ganze JSON-Objekt anstelle des Feldes:

[[msr:[[data:{"level":"OK"}]], creationDate:2017-02-14T16:44:11+0000, date:2017-02-14T16:46:39+0000, id:136]] 

Also, was mache ich falsch?

+1

"Pfad" ist der URL-Pfad, den Sie treffen, nicht der Pfad der Elemente in der Antwort –

Antwort

1

Haben Sie nicht die Dokumente für RESTClient angeschaut, aber wie Tim merkt, dass Sie ein wenig Verwirrung um die restliche Client-Instanz gegenüber dem Respons-Objekt gegenüber den JSON-Daten haben. Etwas in der Art von:

def client = new RESTClient('http://myServer:9000/api/resources/?format=json') 
def response = client.get(path: 'msr/data/level') 
def level = response.data[0].msr[0].data.level 

könnte Ihnen Ihren Wert erhalten. Der Hauptpunkt hier ist, dass client eine Instanz von RESTClient ist, response ist ein Antwortobjekt, das die HTTP-Antwort vom Server darstellt, und response.data enthält die analysierte Json-Nutzlast in der Antwort.

Sie müssten mit dem Ausdruck in der letzten Zeile experimentieren, um den 'Level'-Wert zu erhalten.