java - 无法将 Jackson 与 Immutables 一起使用反序列化:unrecog
问题描述
我有以下格式的 JSON:
{
"FileStatuses": {
"FileStatus": [{
"accessTime": 1479784299020,
"type": "FILE"
},
{
"accessTime": 1475421868510,
"type": "FILE"
}
]
}
}
我正在尝试使用以下类对其进行反序列化:
@Value.Immutable
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(as = ImmutableFileListResponse.class)
@JsonDeserialize(as = ImmutableFileListResponse.class)
public interface FileListResponse {
@JsonProperty("FileStatuses")
JSONObject fileStatuses();
}
但它会引发以下错误:unrecognized field "FileStatus", not marked as ignorable (0 known properties )
但是,如果我将 Json 读取为字符串然后使用JSONObject obj = new JSONObject(source);
它就可以完美地工作。
我哪里错了?
解决方案
我使用以下两个类让它工作:
@Value.Immutable
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(as = ImmutableFileListResponse.class)
@JsonDeserialize(as = ImmutableFileListResponse.class)
public interface FileListResponse {
@JsonProperty("FileStatuses")
FileListInnerResponse fileStatuses();
@Value.Immutable
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(as = ImmutableFileListInnerResponse.class)
@JsonDeserialize(as = ImmutableFileListInnerResponse.class)
interface FileListInnerResponse {
@JsonProperty("FileStatus")
List<FileData> fileStatus();
}
}
和 FileData.java:
@Value.Immutable
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(as = ImmutableFileData.class)
@JsonDeserialize(as = ImmutableFileData.class)
public interface FileData {
@JsonProperty("accessTime")
long accessTime();
@JsonProperty("type")
String type();
}
请让我知道是否有比使用内部类或 3 个不同的类更好的方法。
推荐阅读
- android - Android Kotlin 动态列和行列表而不为每个表创建模型?
- apache-spark - 无法运行简单的 pyspark 程序
- c++ - 我有一个关于初始化数组中的值的问题(c++)
- c - 使用 Windows 命令行测量 c 代码的运行时间
- php - 单独的数组值
- java - 如何将原材料转化为成品,以使所有产品的可用天数最大化
- javascript - D3 Js Burndown图表有错误“属性d:预期数字”,我不知道错误在哪里抛出
- javascript - 如何通过验证形成提交显示模式弹出窗口
- windows - 如何从一组其他更长的字符串中删除不同的字符串?
- ansible - ansible 循环遍历结果并查找文件