2012-09-21 70 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。