NutzCN Logo
问答 Json.toJson不能正确处理Java8LocalDate/LocalDateTime
发布于 269天前 作者 lihongjie0209 223 次浏览 复制 上一个帖子 下一个帖子
标签:
	@Test
	public void LocalData() throws Exception {

		LocalDate now = LocalDate.now();

		HashMap<String, Object> map = new HashMap<>();
		map.put("now", now);
		String json = Json.toJson(now);
		System.out.println(json);
                // {} 打印结果
		JSONAssert.assertJsonEquals(String.format("{now:%s}", now.toString()), json);

              // 断言失败

	}

调试了代码发现在org.nutz.json.impl.JsonRenderImpl中的这段代码:

            // 日期时间
            else if (mr.isDateTimeLike()) {
                boolean flag = true;
                if (obj instanceof Date) {
                    String _val = doDateFormat((Date)obj, null);
                    if (_val != null) {
                        string2Json(_val);
                        flag = false;
                    }
                }

其中isDateTimeLike()并未对java8API进行判断

   /**
     * @return 当前对象是否在表示日期或时间
     */
    public boolean isDateTimeLike() {
        return Calendar.class.isAssignableFrom(klass)
               || java.util.Date.class.isAssignableFrom(klass)
               || java.sql.Date.class.isAssignableFrom(klass)
               || java.sql.Time.class.isAssignableFrom(klass);
    }

3 回复

哦,jdk8的日期类

@wendal
这个会修复吗, 貌似nutz对jdk8日期支持不是很好

添加回复
请先登陆
回到顶部