2012-09-21 99 views
1

我正在使用restassured框架,並且它內部有JsonPath類。 JsonPath有getList(String path,Class T)的方法簽名;如何從restassured JsonPath獲取列表

我試圖做這樣的事情:

List<JsonPath> myList = myJsonPathObject.getList("mypath", JsonPath.class); 

我也得到一個運行時異常鑄造。那麼調用它的正確格式是什麼? 我也試過:

List<JsonPath> myList = myJsonPathObject.getList("mypath", new ArrayList<JsonPath>().getClass()); 

而且這也失敗了。其實那個編譯失敗了。

回答

2

JsonPath用於從JSON文檔中提取值。您無法從JSON文檔中獲取「JsonPath」列表。

+0

您是否有任何文檔來支持您所聲稱的內容。 json是對象和子對象的標記,本質上json是json中json的標記,所以我不明白爲什麼不能從json中獲取json的列表。 – Churk

+2

那麼我是框架的創始人,所以我實現了與Rest Assured一起發佈的JsonPath,所以知道它不被支持。它可能在其他框架中得到支持。我的一位同事實現了另一個JsonPath(http://code.google.com/p/json-path/),它不使用Groovy語法,也許它支持做你想做的事情。 – Johan

0

我知道這是一個古老的威脅,但有人評論並提醒我這一點。我其實找到了這個問題的答案。

我所要做的就是將它轉換爲Map<String, Object>,並在遍歷對象的同時,我必須將該對象轉換爲相應的類。

Map<String, Object> myMap = (Map<String, Object>) myJsonPathObject.get("mypath"); 
for (String key : myMap.getKeySet()) { 
    Map<String, Object> subMyMap = (Map<String, Object>) myMap.get(key); 
} 

所以現在我可以繼續得到額外的樣機,JSON內的JSON。