当前位置: 首页 > 知识库问答 >
问题:

以json格式从rest服务返回映射

商瀚
2023-03-14

我有一个方法返回map 。代码如下定义类所示:

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);
}
@GET
@Path("/m1")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, ArrayList<EntityClass>> m1(){
    return new Definition().webMethod1();
}

HTTP 500作为错误。

如何解决此错误

共有1个答案

丘普松
2023-03-14

可能您应该考虑使用像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类和结构是毫无意义的。

 类似资料:
  • 问题内容: 如何将Webmethod的值以JSON格式返回给客户端? 我要返回两个静态int值。 我是否需要使用这两个属性创建新对象并返回它? GetStatus()方法经常被调用,我不喜欢每次仅用于json格式创建一个特殊对象的想法。 在客户端,我在捕获返回值: 问题答案: 我只想带一个物体。它符合您的需求。如果您有两个返回值,则必须以结构化的方式将它们放在一起。

  • 问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:

  • 基本上,我想做一个POST请求与以下主体: 为什么会这样?

  • 问题内容: 我正在使用.Net framework 2.0 / jQuery对2.0 Web服务进行Ajax调用。无论我在ajax调用中将contentType设置为什么,该服务始终返回XML。我希望它返回Json! 这里是电话: 这是Fiddler中请求标头的样子: 我尝试将contentType设置为’text / json’并获得相同的结果。 这是Web服务方法: 这是它返回的内容: 有人知

  • 问题内容: 如何使用Jersey / JAX-RS框架以XML / JSON文档形式返回a并不是很明显。它已经支持s了,但是当涉及到s时,就没有了。即使将嵌入到包装器类中,XML模式中也没有类型。 关于如何在Jersey中将地图编组为XML / JSON文档的任何实用建议? 问题答案: 我知道它的回复很晚,但是我希望有一天它能对某人有所帮助:)我应用的最简单,最快的修复方法是 输出:{“ 1”:“

  • 我需要根据以下场景格式化restful服务的输出(xml) 我有一个键值对如下的类。 假设我有这样的列表,由rest服务返回: 我想生成如下输出 但目前它提供了以下输出 有人能告诉我如何做到这一点吗?