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

jersey 2.0 jaxrs RI-异常时返回json字符串

唐照
2023-03-14

我正在使用泽西2.0创建一个REST服务。我正在扩展WebApplication异常

方法引发特定异常

if(json.equals("") || json.equals(" ")) {
      throw new ArgumentException("bad post data");
}


      public class ArgumentException extends RestException  {
         .....

         public ArgumentException(String message) {
             super(Status.BAD_REQUEST,message);
         }
    }


    public class RestException extends WebApplicationException  {
    ...........
     public RestException(Status status, String message) {

             super(Response.status(status)
                     .entity(message)
                     .type("text/plain")
                     .build()); 
             /*
             super(Response.status(status)
                     .entity(new ErrorBean(status.getStatusCode(),message))
                     .type(MediaType.APPLICATION_JSON)
                     .build()); */

         }


ErrorBean is a POJO

在RestException中以普通字符串形式返回错误的方法可以工作(右侧的http代码400和消息)。然而,当我试图传递ErrorBean POJO并使用MediaType时。应用程序_JSON在响应中,我收到一个错误,上面写着“Headers have have sent”,http错误代码为500(因此管道系统存在一些内部问题),响应为空。

我还研究了在泽西岛返回JSON或XML作为异常的问题

我如何返回异常与代码和消息作为一个JSON喜欢

{“代码”:400,“消息”:

使现代化

我已经收到了关于SO以及泽西岛用户邮件列表的回复。步骤是

  • 非AJXB POJO不需要任何注释
  • 在您的应用程序中注册JacksonFeature

ResourceConfig rc=new ResourceConfig()。包("test")。寄存器(JacksonFeature.class);

共有1个答案

司空学智
2023-03-14

您需要在应用程序/ResourceConfig中注册JacksonFeature,即:

// Create JAX-RS application.
final Application application = new ResourceConfig()
        .packages("org.glassfish.jersey.examples.jackson")
        .register(JacksonFeature.class)
        // No need to register this provider if no special configuration is required.
        .register(MyObjectMapperProvider.class);

看看杰克逊在泽西的支持留档,也看看这个例子。

 类似资料:
  • 问题内容: 我正在开发一个使用JSON进行服务器通信的Android应用,当我尝试解析json文件时遇到了一个奇怪的问题。 这是我来自服务器的json 我通过调用地址Json-object 获得City的价值。对于这种情况,我期望为空(这是optString的意思吗?),但实际上它包含字符串“ null”。因此,进一步的null或isEmpty- checks将返回false,因为String包含

  • 我正在开发一个使用JSON进行服务器通信的Android应用程序,当我试图解析我的json文件时,我遇到了一个奇怪的问题。 这是来自服务器的json 我通过调用字符串City=address来获取City的值。我的地址Json对象上的optString(“city”,“”)。对于这种情况,我希望城市是空的(这就是optString在这里的目的,不是吗?)但实际上它包含字符串“null”。因此,进一

  • 我有一个Spring MVC控制器,方法如下: 它位于一个开始如下所示的控制器内部: 我使用的是Spring WebMVC 4.1.3和Jackson 2.4.3。我尝试在RequestMapping中添加一个“produces”属性,表示它应该返回JSON。在本例中,发回的Content-Type属性是“application/json”,但仍然没有引用测试字符串。 我可以通过调用JSON库将J

  • 问题内容: 我发现以下行为至少 很奇怪 : 在子句中使用时,该异常消失。那是个错误吗?那在任何地方都有记录吗? 但是真正的问题(我将标记为正确的答案)是: python开发人员允许这种奇怪行为的原因是什么? 问题答案: 您询问了有关Python开发人员的推理。我不能为他们说话,但是没有其他行为可以理解。函数可以返回值,也可以引发异常。它不能同时做到。“最终”子句的目的是提供“保证”运行的清除代码,

  • 我希望自动将对象序列化为JSON的便利性和返回原始JSON字符串的能力。我正在使用Gson而不是Jackson,因为Gson已经在我的应用程序中有一段时间了,我有现有的调整,转换器,和注释遍布我的应用程序。 我可以自动序列化POJO的: 我希望这也能奏效: 现在的结果是一个转义值: 而不是:

  • 以下endpoint以字符串形式返回用户名。 我如何构造它以返回一个json对象,该对象包含一个键,该键的值为该字符串(例如,{“user”:“joeuser”})?