【发布时间】:2018-02-27 18:26:40
【问题描述】:
我正在使用 JSON 从 HttpServlet 获取数据,用于在 servlet 和 java 客户端之间共享的数据对象类定义。如果我打印出 api 调用的响应,我可以看到实例变量是正确的。然后,当我使用 Jackson 对象映射器对其进行映射并查看实例时,值是错误的,总是比响应和数据库中的日期低一天。
响应如下:
[{"coveragePK":3,"agentPK":2,"serviceCoveragePK":12,
"coverageDate":"2018-02-27","duration":10,"remainder":1,
"startTime":"07:30:00","query":""},
{"coveragePK":4,"agentPK":2,"serviceCoveragePK":13,
"coverageDate":"2018-02-27","duration":8,"remainder":2,
"startTime":"10:00:00","query":""}]
映射后我得到:
Date: 2018-02-26 which is printed with
java.sql.Date date = coverages[i].getCoverageDate();
System.out.println("Date: " + date.toString());
如果我将 sql.Date 转换为 LocalDate,结果与预期的相同。
我使用以下内容编写覆盖范围为 ArrayList 的 json。
ObjectMapper mapper = new ObjectMapper();
String psWindows = mapper.writeValueAsString(coverages);
PrintWriter out = httpServletResponse.getWriter();
out.append(psWindows);
我用
阅读了 JSONObjectMapper mapper = new ObjectMapper();
CoverageDO[] coverage = mapper.readValue(foo, CoverageDO[].class);
【问题讨论】:
标签: java json jackson objectmapper