我有一个返回Map<String, ArrayList<EntityClass>>
的方法。代码如下Definition
类:
public Map<String, ArrayList<EntityClass>> webMethod1(){
ArrayList<EntityClass> arr = new ArrayList<>();
for (int i=0;i<5;i++){
arr.add(new EntityClass(i, String.valueOf(i)));
}
Map<String, ArrayList<EntityClass>> map = new HashMap<>();
map.put("Entity", arr);
}
此外,Web服务调用如下:
@GET
@Path("/m1")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, ArrayList<EntityClass>> m1(){
return new Definition().webMethod1();
}
但我正在控制台上关注:
MessageBodyWriter not found for media type=application/json, type=class java.util.HashMap, genericType=class java.util.HashMap.
和HTTP 500
为错误。
如何解决此错误
答案 0 :(得分:1)
可能你应该考虑使用像GSON这样的简单编组库。 我最终得到了这段代码:
@GET
@Path("/m1")
@Produces(MediaType.APPLICATION_JSON)
public String webMethod1(){
ArrayList<EntityClass> arr = new ArrayList<>();
for (int i=0;i<5;i++){
arr.add(new EntityClass(i, "\"-'"+String.valueOf(i)));
}
Map<String, List<EntityClass>> map = new HashMap<>();
map.put("Entity", arr);
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
return gson.toJson(map);
}
这对我来说非常好,并且在编写MessageBodyWriter
时不会增加很多复杂性,这对于简单的POJO类和结构来说毫无意义。