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

Json与响应和异常通用模型的映射

尉迟俊能
2023-03-14

编辑:

像这样:

@RestController
@RequestMapping("..")
public class XXX {


@RequestMapping("..,consume/produce Json")
public ResponseEntity<T> method(@RequestBody arg)

T objectToReturn = ... ;


return new ResponseEntity<T>(objectToReturn, HttpStatus.CREATED);
}

...
}

共有1个答案

方增
2023-03-14

对于简单的例子,您可以使用Jackson2,在序列化java类时忽略空字段。

您的控制器可以如下所示

public ResponseEntity<ResponseStatus> method(@RequestBody @Valid arg,BindingResult result){
        ResponseEntity<ResponseStatus> response = null;
        if(result.hasErrors()){
            Meta meta = new Meta(HttpStatus.BAD_REQUEST);
            ResponseStatus body = new ResponseStatus(meta,null);
            response = ResponseEntity.badRequest().body(body);
        }else{
              Meta meta = new Meta(HttpStatus.CREATED);
              Data data = service.data(arg);
              response = ResponseEntity.created(new URI("location"))
                         .body(new ResponseStatus(meta,data));
        }
        return response;
    }

而其他类将是

//Ignore Null Fields on the Class
@JsonInclude(Include.NON_NULL)
class ResponseStatus{
 @Getter @Setter Meta meta;
 @Getter @Setter Data data;

 public ResponseStatus(Meta meta, data){
    this.meta = meta;
    this.data = data;
  }
}

//Ignore Null Fields on the Class
@JsonInclude(Include.NON_NULL)
class Meta{

 @Getter @Setter int status;
 @Getter @Setter String errorCode;
 @Getter Setter message;

 public Meta(HttpStatus httpStatus){
   status = httpStatus.value();
   message = httpStatus.getReasonPhrase();
   errorCode ="You code specific here";

 }
}
 类似资料:
  • 首先,我对这个问题太长表示最诚挚的歉意,但老实说,我不知道如何缩短它,因为每个部分都是一个特例。诚然,我可能对此视而不见,因为我已经把头撞到墙上好几天了,我开始绝望了。 我向所有通读这本书的人表示最大的尊重和感谢。 我希望能够通过使用Jersey ExceptionMapers将Shiro的AuthenticationException及其子类映射到JAX-RS响应,Jersey例外映射器是使用G

  • 我正在使用@ExceptionHandler来管理我的所有异常,并为任何抛出异常的REST API返回一个JSON响应。目前我管理两个异常,第一个是ResourceNotFoundException,它可以工作,但第二个是FileExtensionException,它不工作。它在eclipse控制台中抛出这个异常,而在rest响应中抛出任何东西。 2015-09-21 09:09:05.197错

  • 嗨,我正在尝试使用HttpURLConnection POST方法进行服务器请求,但没有收到任何响应,我在SO中看到了一些帖子,但我无法理解它们。下面是我的代码 上面的代码给我错误FilenotoundExcepttion stackTrace如下 这是我的URL

  • 我试图在应用程序的另一个模块中访问SpringRESTendpoint。因此,我尝试使用REST模板来获取用户列表,如下所示: 使用REST模板的API请求: LeadUserList类: LeadUser模型类: APIendpoint控制器类: 尽管返回类型是来自APIendpoint的JSON,但我得到了上述异常。我做错了什么? 例外情况:

  • 问题内容: NSData * jsonData 是包含JSON数据的http响应。 我得到了结果: 将数据编码为正确的字符串而不是“ \ uxxxx”之类的Unicode字符串的正确方法是什么? 问题答案: 如果您转换JSON数据 到(例如使用)并打印字典 那么你会得到输出 原因是该方法对所有非A​​SCII字符使用“ \ Unnnn”转义序列。但这仅是为了在控制台中 显示 ,字典是 正确的 !

  • 当在Spring中实现全局异常处理程序时,我注意到,如果不能识别接受头,Spring会抛出它自己的内部错误。我需要的是返回一个自定义的JSON错误结构。适用于特定于应用程序的异常,完全失败。 此代码告诉我"未能调用@ExceptionHandler方法:publicjava.util.Map RestExceptionHandler.springMalformedAcceptHeaderExcti