Java 返回错误列表

Java 返回错误列表,java,spring-restcontroller,spring-rest,Java,Spring Restcontroller,Spring Rest,我希望使用此响应对象返回错误列表: public class StringResponseDTO { private String response; public StringResponseDTO(String response) { super(); this.response = response; } public String getResponse() { return response;

我希望使用此响应对象返回错误列表:

public class StringResponseDTO {

    private String response;

    public StringResponseDTO(String response) {
        super();
        this.response = response;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }
}
我使用此代码生成错误:

List<FieldError> errors = result.getFieldErrors();
        for (FieldError error : errors ) {
          System.out.println ("Validation error in field: " + error.getObjectName() 
                          + "! Validation error message: " + error.getDefaultMessage() 
                          + "! Rejected value:" + error.getRejectedValue());
          return ResponseEntity.ok(new StringResponseDTO(error.getField() + " " + error.getDefaultMessage()));
        }
你知道我如何修改代码吗?可能我需要添加构造函数

response: {
   errors: [
      field_name: message,
      second_name: second_message
           ]
}
您需要使用以下类对上述json进行建模:

@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
@JsonTypeName("response")
class StringResponseDTO {

    private List<String> errors;

    public StringResponseDTO(final List<String> errors) {
        this.errors = errors;
    }

    public List<String> getErrors() {
        return errors;
    }

    public void setErrors(final List<String> errors) {
        this.errors = errors;
    }
}
@JsonTypeInfo(include=JsonTypeInfo.As.WRAPPER\u对象,use=JsonTypeInfo.Id.NAME)
@JsonTypeName(“响应”)
类StringResponseDTO{
私有列表错误;
public StringResponseDTO(最终列表错误){
这个。错误=错误;
}
公共列表getErrors(){
返回错误;
}
公共无效设置错误(最终列表错误){
这个。错误=错误;
}
}
您可以将响应构造为:

List<String> errorsList = new ArrayList<>();
List<FieldError> errors = result.getFieldErrors();
for (FieldError error : errors ) {
     System.out.println ("Validation error in field: " + error.getObjectName() 
                     + "! Validation error message: " + error.getDefaultMessage() 
                     + "! Rejected value:" + error.getRejectedValue());
          errorsList.add(error.getField() + " " + error.getDefaultMessage());
}

return ResponseEntity.badRequest().body(new StringResponseDTO(errorsList));
List errorsList=new ArrayList();
List errors=result.getFieldErrors();
for(FieldError错误:错误){
System.out.println(“字段中的验证错误:”+error.getObjectName()
+!验证错误消息:“+error.getDefaultMessage()
+“!拒绝的值:”+错误。getRejectedValue());
errorsList.add(error.getField()+“”+error.getDefaultMessage());
}
返回ResponseEntity.badRequest().body(新的StringResponseDTO(errorsList));

使用
StringBuilder
代替
println()
。如果返回循环内部,则循环结束。如果要返回错误列表,则返回的对象应包含一个列表,并且在返回之前,应使用所有错误填充该列表。应使用类似Jackson或ObjectMapper或Gson的序列化程序将列表转换为json字符串。请给我举一个工作示例,好吗?该示例不是有效的json。错误是数组还是对象?你使用方括号就像它是一个数组,但是你有field_name:val1,second_name:val2,就好像它是一个有两个字段的对象——field_name和second_name。它实际上应该是什么,数组还是对象?您希望在输出中使用什么JSON?
List<String> errorsList = new ArrayList<>();
List<FieldError> errors = result.getFieldErrors();
for (FieldError error : errors ) {
     System.out.println ("Validation error in field: " + error.getObjectName() 
                     + "! Validation error message: " + error.getDefaultMessage() 
                     + "! Rejected value:" + error.getRejectedValue());
          errorsList.add(error.getField() + " " + error.getDefaultMessage());
}

return ResponseEntity.badRequest().body(new StringResponseDTO(errorsList));