Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用fasterxml.jackson从json api响应中提取特定字段值_Json_Jackson_Gson_Fasterxml - Fatal编程技术网

如何使用fasterxml.jackson从json api响应中提取特定字段值

如何使用fasterxml.jackson从json api响应中提取特定字段值,json,jackson,gson,fasterxml,Json,Jackson,Gson,Fasterxml,我的其中一个api回应如下: { "statusCode": 422, "error": "Unprocessable Entity", "message": "Bad data received", "err_data": { "email": { "location": "body", "param": "email", "value": false, "msg":

我的其中一个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;
    }
}
我不熟悉
fasterxml.jackson
lib,不知道我缺少了什么


要获得
msg
值,我必须在上面的模型类中进行哪些更改。非常感谢您。

这就是您的代码不正确的地方:

@JsonProperty("err_data")
private List<String> errData = new ArrayList<>();

@JsonProperty("email")
private List<String> email = new ArrayList<>();


然后使用新类作为对象类型

@JsonProperty("err_data")
private ErrData errData; 
// email is already inside ErrData, you don't need to define them here
最后,要访问您的
msg

errData.getEmail().getMsg();

希望这足够清楚。祝你好运

这就是您的代码不正确的地方:

@JsonProperty("err_data")
private List<String> errData = new ArrayList<>();

@JsonProperty("email")
private List<String> email = new ArrayList<>();


然后使用新类作为对象类型

@JsonProperty("err_data")
private ErrData errData; 
// email is already inside ErrData, you don't need to define them here
最后,要访问您的
msg

errData.getEmail().getMsg();

希望这足够清楚。祝你好运

谢谢你的快速回复!我按照你们的建议做了,然后这样做是为了访问消息,但得到了空指针<代码>ApiResponse ApiResponse=new Gson().fromJson(response.asString(),ApiResponse.class);System.out.println(apiResponse.getErrData().getEmail().getMsg())您是否将@json属性添加到电子邮件字段?您还应该在其他类上定义它们:DI现在就知道了。。字段名不同。。我不得不重新命名getter方法名-
@JsonProperty(“err_data”)public ErrData getErr_data(){return err_data;}
现在工作正常<代码>System.out.println(apiResponse.getErr_data().getEmail().getMsg())感谢您的快速回复!我按照你们的建议做了,然后这样做是为了访问消息,但得到了空指针<代码>ApiResponse ApiResponse=new Gson().fromJson(response.asString(),ApiResponse.class);System.out.println(apiResponse.getErrData().getEmail().getMsg())您是否将@json属性添加到电子邮件字段?您还应该在其他类上定义它们:DI现在就知道了。。字段名不同。。我不得不重新命名getter方法名-
@JsonProperty(“err_data”)public ErrData getErr_data(){return err_data;}
现在工作正常<代码>System.out.println(apiResponse.getErr_data().getEmail().getMsg())