杰克逊如何解析也是日期值的文件

时间:2018-08-02 09:21:25

标签: java json jackson jackson-databind

我有HashMap<LocalDate,SundayServerValue>,可以将json中的数据保存到文件中

HashMap<LocalDate,SundayServerValue>

我这样制作json字符串

String jsonToSaved = ob.writeValueAsString(sundayUpdateDateMap);

或这个

ob.writeValue(new File(pathToSundayMapFile), sundayUpdateDateMap);

这是String jsonToSaved的样子

两者都返回相同的json格式,只是没有"data":"yyyy-MM-dd"

"yyyy-MM-dd"

课程

{"2018-08-05":[{"ip":"1.7.2.3","window1":true,"window2":false}, 
{"ip":"2.1.2.2","window1":false,"window2":true}]}

从此JSON加载时,如何使import json.LocalDateDeSerializer; public class SundayJsonTemplate { @JsonSerialize(using = ToStringSerializer.class) @JsonDeserialize(using = LocalDateDeSerializer.class) private LocalDate date; private ArrayList<SundayServerValue> sundayServerValueList; public SundayJsonTemplate() { } public SundayJsonTemplate(LocalDate date, ArrayList<SundayServerValue> sundayServerValueList) { this.date = date; this.setSundayServerValueList(sundayServerValueList); } [...] } public class SundayServerValue { private String ip; private boolean window1; private boolean window2; [...] } 理解ObjectMaper()是字段名称和值?

2 个答案:

答案 0 :(得分:1)

在以LocalDate作为其类型的字段上使用@JsonSerialize@JsonDeserialize批注-

@JsonSerialize(using = ToStringSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)

答案 1 :(得分:0)

如果有人只需要一个可行的解决方案,我就会写这篇文章。

首先,我需要承认我在解决这个问题上花费了很多时间后才放弃了。 我想尽可能地使它最佳并学习,但是我现在不想浪费更多的时间。

这是我反序列化此JSON的工作

TypeReference<HashMap<String, ArrayList<SundayServerValue>>> typeReference = new TypeReference<HashMap<String,ArrayList<SundayServerValue>>>(){};


        HashMap<String, ArrayList<SundayServerValue>>
        map = ob.readValue(loadStringFromFile, typeReference);

此后,我仅创建一个新地图并将其中String转换为LocalDate