2017-02-14 92 views
0

我正在編寫我的第一個Groovy腳本,我正在調用REST API。無法從RESTClient響應提取數據

我有以下電話:

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

返回:

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

我試圖讓現場level,就像這樣:

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

然而,當我打印獲得的變量值:

println level_value.getData() 

我得到整個JSON對象,而不是現場:

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

那麼,我究竟做錯了什麼?

+1

'path'是你打的URL路徑,而不是響應中元素的路徑 –

回答

1

沒有看過RESTClient的文檔,但像Tim提到的,你似乎對其他客戶端實例與響應對象vs json數據有點混淆。一些沿線:

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 

可能會讓你的價值。這裏的要點是client是RESTClient的一個實例,response是一個響應對象,表示來自服務器的http響應,並且response.data包含解析的json負載。

您需要試驗最後一行上的表達式以提取'level'值。