【问题标题】:JSON to POJO conversion error in Rest webserviceRest webservice中的JSON到POJO转换错误
【发布时间】:2016-01-14 07:18:54
【问题描述】:

我正在使用 wildfly 10 和 REST,但出现以下错误:

08:15:19,827 错误 [org.jboss.resteasy.resteasy_jaxrs.i18n](默认 任务 22)RESTEASY002010:执行失败: javax.ws.rs.NotSupportedException:RESTEASY003065:无法使用 内容类型

我有以下要求:

http://localhost:8080/MyApp/rest/myService/test?data=%7B%22MyData%22:%7B%22id%22:%223d87e735-4f88-49bd-929b-5f2b646e853e%22,%22name%22:%22myname%22%7D%7D

--> 参数为:

数据:{"MyD​​ata":{"id":"3d87e735-4f88-49bd-929b-5f2b646e853e","name":"myname"}}

我的服务:

@Path("/myService")
@Produces(MediaType.APPLICATION_JSON)
@Stateless
public class StammdatenRestRessource {

  @POST
  @Path("/test")
  @Consumes(MediaType.APPLICATION_JSON)
  public Response test(final MyData data) {
      System.out.println(data);
      return Response.ok().build();
  }
}

还有我的 POJO:

@XmlRootElement
@Entity
public class MyData{

@Id
@Column(name = "ID")
private String id;

private String name;

public MyData() {
    id = UUID.randomUUID().toString();
}

// getters & setters
}

有什么想法吗?

【问题讨论】:

  • 我找不到一个可以与 RESTeasy 一起使用的 @Consumes 注释。每个人都责怪“客户端”,但从浏览器控制台发出的 javascript ajax 调用完全适用于其他所有事情。使其工作的唯一方法是取出 Consumes 注释

标签: json rest jackson wildfly pojo


【解决方案1】:

确保发送值为“application/json”的“Content-type”标头:

curl -H 'Content-type: application/json' http://localhost:8080/MyApp/rest/myService/test?data=%7B%22MyData%22:%7B%22id%22:%223d87e735-4f88-49bd-929b-5f2b646e853e%22,%22name%22:%22myname%22%7D%7D

【讨论】:

    【解决方案2】:

    对我来说最明显的地方是 id 字段。 "id" 的值不会解析为 UUID 对象(您可以尝试调用 UUID.fromString() 并自己查看)。取一个“真实”的 UUID 值,看看这是否是问题所在

    这是给你的"3d87e735-4f88-49bd-929b-5f2b646e853e"

    【讨论】:

    • 感谢您的建议,但我得到了同样的错误。我还尝试将 UUID 更改为字符串。
    【解决方案3】:

    好的,我找到了解决方案。我必须将我的 json 对象放在请求正文中,而不是地址中。

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 2017-09-08
      • 2015-09-04
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      相关资源
      最近更新 更多