【发布时间】:2018-02-10 05:54:42
【问题描述】:
我的一个 api 响应如下 -
{
"statusCode": 422,
"error": "Unprocessable Entity",
"message": "Bad data received",
"err_data": {
"email": {
"location": "body",
"param": "email",
"value": false,
"msg": "Please provide valid e-mail address"
}
}
}
所以,在下面的response.asString() 代表上面的响应体。
ApiResponse response = new Gson().fromJson(response.asString(), ApiResponse.class);
ApiResponse.class是我的模型,如下:
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "statusCode", "message" })
public class ApiResponse implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("message")
private String message;
@JsonProperty("statusCode")
private int statusCode;
@JsonProperty("err_data")
private List<String> errData = new ArrayList<>();
@JsonProperty("email")
private List<String> email = new ArrayList<>();
@JsonProperty("msg")
private String msg;
/**
* No args constructor for use in serialization
*/
public ApiResponse() {
}
/**
* @param message
*/
public ApiResponse(int statusCode, String message, List<String> errData, List<String> email, String msg) {
this.message = message;
this.statusCode = statusCode;
this.errData = errData;
this.email = email;
this.msg = msg;
}
@JsonProperty("statusCode")
public int getStatusCode() {
return statusCode;
}
@JsonProperty("statusCode")
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
@JsonProperty("message")
public String getMessage() {
return message;
}
@JsonProperty("message")
public void setMessage(String message) {
this.message = message;
}
@JsonProperty("err_data")
public List<String> getErrData() {
return errData;
}
@JsonProperty("err_data")
public void setErrData(List<String> errData) {
this.errData = errData;
}
@JsonProperty("email")
public List<String> getEmail() {
return email;
}
@JsonProperty("email")
public void setEmail(List<String> email) {
this.email = email;
}
@JsonProperty("msg")
public String getMsg() {
return msg;
}
@JsonProperty("msg")
public void setMsg(String msg) {
this.msg = msg;
}
}
当我试图在"email":{} 下获取msg 时,它正在返回null。
ApiResponse apiResponse = new Gson().fromJson(response.asString(), ApiResponse.class);
// this prints correct value
System.out.println(apiResponse.getMessage());
// this prints correct value
System.out.println(apiResponse.getStatusCode());
// this prints empty string array => []
System.out.println(apiResponse.getErrData());
// this also prints empty string array => []
System.out.println(apiResponse.getEmail());
// this prints null
System.out.println(apiResponse.getMsg());
我是 fasterxml.jackson lib 的新手,不确定我缺少什么。
要获得msg 值,我必须在上面的模型类中进行哪些更改。非常感谢您。
【问题讨论】:
标签: json jackson gson fasterxml