【发布时间】:2020-08-30 12:56:39
【问题描述】:
我知道在 StackOverflow 上有很多与此问题相关的问题(我已经为他们尝试了很多解决方案),但我一直 尝试了几个小时来解决这个问题,但我总是得到同样的错误。
我有 JSON 中的日期列表,当我尝试反序列化它时,出现以下错误:com.google.gson.JsonSyntaxException: 2020-08-30 Caused by: java.text.ParseException: Unparseable date: "2020-08-30" at java.base/java.text.DateFormat.parse(DateFormat.java:396) at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79) .
我的代码:
格森:
private static Gson g = new GsonBuilder()
.setDateFormat("yyyy-MM-dd")
.setPrettyPrinting()
.serializeNulls()
.create();
Java 类中的字段:
private List<Date> freeDates;
该字段的部分 JSON:
{"freeDates": ["2020-08-30", "2020-08-31", "2020-09-01", "2020-09-02"]}
我也尝试过其他日期格式,例如 ISO-8601 标准,但结果总是一样...
抱歉重复问题。
提前致谢!
更新: 我调用fromJson 方法的部分代码。这是我的 GenericRepository 类,所有 Repository 类都扩展了这个类。
public List<T> getAllEntities(String fileName){
BufferedReader br = null;
List<T> entities = new ArrayList<T>();
try {
br = new BufferedReader(new FileReader(fileName));
String line;
StringBuilder fileContent = new StringBuilder();
while((line = br.readLine()) != null) {
fileContent.append(line);
if(line.trim().equals("END")) {
fileContent.delete(fileContent.length() - 4, fileContent.length());
T entity = g.fromJson(fileContent.toString(), type);
entities.add(entity);
fileContent.setLength(0);
}else
fileContent.append("\n");
}
return entities;
}
【问题讨论】:
-
能否补充一段代码,你在哪里调用fromJson方法?
-
无法重现。当我用
gson-2.8.5.jar测试它时工作正常 -
@AlexanderMakarov @AlexanderMakarov 我有 GenericRepository 类,所以所有 Repository 类都扩展它。
fromJson方法在该类中。我已经用调用该方法的代码更新了我的问题。
标签: java json date serialization gson