我有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()
是字段名称和值?
答案 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
。