【发布时间】:2019-12-17 10:03:47
【问题描述】:
我有字段names:
private List<String> names;
我得到的 Json 看起来像:
"names": [
{
"name": "a",
},
{
"name": "b",
},
{
"name": "c",
}
]
所以我使用自定义序列化将此 json 转换为 List:
@JsonProperty("names")
private void deserializeNames(List<Map<String, String>> json) {
names = json.stream().map(e -> e.get("name")).collect(Collectors.toList());
}
这个解决方案有效,但是当我想序列化我的类的对象时,新的 json 看起来像:
"names": [
"a",
"b",
"c"
]
我的自定义序列化代码无法使用它,因为它需要 Map 而不是 List
我尝试使用instanceof 或反序列化列表映射来解决问题,但我认为这是一个错误的解决方案。
这个问题有什么简单的解决方案吗?
【问题讨论】:
-
Json 和类字段不匹配,该字段不会产生这样的 Json。
-
@amer 是的,我明白了。但我很高兴找到同时使用两种格式的解决方案
-
我的建议是不要使用
List<Map<String, String>> json作为名称列表,没有必要,只使用List<String>或者如果你必须使用<Map<String, String>。但是使用 List od Maps 是多余的。 -
@amer 这是我从第三方来源获得的数据格式。我不控制它。
-
然后试试这样的:
Map<String,String> map = new HashMap<>(); for(String name:json){ map.put("name",name); }
标签: java json serialization jackson deserialization