java - 如何使用嵌套的 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 对象,但结果是一个空对象。有任何想法吗 ?
解决方案
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);
}
推荐阅读
- kotlin - 如何在 Kotlin 中为具有默认值 true 或 false 或 null 的变量传递值
- oracle11g - ORACLE APEX 创建登录触发器
- python - ReportLab 目录
- mysql - 如何在不重复计算的情况下执行 SQL
- c - MSBuild 无法从 CLI 构建。无效的静态调用语法
- wpf - keyDown 事件在按下并释放第二个键后停止触发
- python - 转换数据帧的 2 列,在对应的 uint16_t 的列中存储两个 uint8_t
- c++ - 如何定义构造函数c ++
- java - 使用 GLES30 进行 VAO 渲染:偏移量/长度错误!!!!!!错误
- c# - 使用 Span 存储单词集合的有效方法是什么
?