首页 > 解决方案 > 如何使用嵌套的 json 数组反序列化 json 对象

问题描述

我是 Java 新手,我正在尝试使用 gson 库反序列化具有嵌套 Json 对象数组的 Json 对象,但面临一些困难。

需要一些关于如何使用 gson 库以正确方式做到这一点的帮助吗?

POJO:

@JsonRootName(value = "Error")
public class ErrorData {

    private String Source;
    private String ReasonCode;
    private String ErrorCode;
    private String Description;
// getters and setters
}

@JsonRootName(value = "Errors")
public class ErrorsDataRes {
    @SerializedName("Error")
    private List<ErrorData> Error;
// getters and setters
}

主要的:

public static void main(String[] args) throws Exception {
        String data =
 "{\"Errors\":{\"Error\":[{\"Source\":\"INPUT\",\"ReasonCode\":\"INVALID_FIELD_VALUE\",\"ErrorCode\":\"E0001\",\"Description\":\"Invalid Field Value\"}]}}";
        Gson gson = new GsonBuilder().create();
        ErrorsDataRes errors = gson.fromJson(data, ErrorsData.class);
}

我期望将 Json 字符串反序列化为我的 ErrorsDataRes 对象,但结果是一个空对象。有任何想法吗 ?

标签: javajsongsonjson-deserialization

解决方案


POJO 类不正确。请试试这个。

POJO:

 public class ErrorData {
    @SerializedName("Source")
    private String Source;
    @SerializedName("ReasonCode")
    private String ReasonCode;
    @SerializedName("ErrorCode")
    private String ErrorCode;
    @SerializedName("Description")
    private String Description;
}
public class ErrorsData {
    @SerializedName("Error")
    private List<ErrorData> Error;
   //getters and setters
}

public class ErrorsDataRes {

    @SerializedName("Errors")
    private ErrorsData errors;
}

public static void main(String[] args) {
        String data =
                "{\"Errors\":{\"Error\":[{\"Source\":\" INPUT\",\"ReasonCode\":\"INVALID_FIELD_VALUE\",\"ErrorCode\":\"E0001\",\"Description\":\"Invalid Field Value\"}]}}";
        Gson gson = new GsonBuilder().create();
        ErrorsDataRes errors = gson.fromJson(data, ErrorsDataRes.class);
        System.out.println(errors);
    }

推荐阅读