diff --git a/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java index 0d1eb21eb..2471f1d7d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java @@ -114,7 +114,9 @@ public class TemporalAccessorUtil extends TemporalUtil{ /** * {@link TemporalAccessor}转换为 时间戳(从1970-01-01T00:00:00Z开始的毫秒数)
- * 如果为{@link Month},调用{@link Month#getValue()} + * 如果为{@link Month},调用{@link Month#getValue()}
+ * 如果为{@link DayOfWeek},调用{@link DayOfWeek#getValue()}
+ * 如果为{@link Era},调用{@link Era#getValue()} * * @param temporalAccessor Date对象 * @return {@link Instant}对象 @@ -123,6 +125,10 @@ public class TemporalAccessorUtil extends TemporalUtil{ public static long toEpochMilli(final TemporalAccessor temporalAccessor) { if(temporalAccessor instanceof Month){ return ((Month) temporalAccessor).getValue(); + } else if(temporalAccessor instanceof DayOfWeek){ + return ((DayOfWeek) temporalAccessor).getValue(); + } else if(temporalAccessor instanceof Era){ + return ((Era) temporalAccessor).getValue(); } return toInstant(temporalAccessor).toEpochMilli(); } diff --git a/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java b/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java index b2bf5cffc..3e7425b94 100755 --- a/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java +++ b/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java @@ -16,9 +16,7 @@ import cn.hutool.json.JSONException; import java.io.IOException; import java.io.Writer; -import java.time.DayOfWeek; import java.time.MonthDay; -import java.time.chrono.Era; import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Date; @@ -139,8 +137,7 @@ public class JSONWriter extends Writer { */ @SuppressWarnings({"UnusedReturnValue", "resource"}) public JSONWriter writeField(final MutableEntry pair, final Predicate> predicate) { - final Object value = pair.getValue(); - if (null == value && config.isIgnoreNullValue()) { + if (null == pair.getValue() && config.isIgnoreNullValue()) { return this; } @@ -151,13 +148,12 @@ public class JSONWriter extends Writer { } } - final Object key = pair.getKey(); if(false == arrayMode){ // JSONObject模式,写出键,否则只输出值 - writeKey(StrUtil.toString(key)); + writeKey(StrUtil.toString(pair.getKey())); } - return writeValueDirect(value, predicate); + return writeValueDirect(pair.getValue(), predicate); } /** @@ -241,11 +237,9 @@ public class JSONWriter extends Writer { writeNumberValue((Number) value); } else if (value instanceof Date || value instanceof Calendar || value instanceof TemporalAccessor) { // issue#2572@Github - if(value instanceof TemporalAccessor){ - if(value instanceof DayOfWeek || value instanceof java.time.Month || value instanceof Era || value instanceof MonthDay){ - writeQuoteStrValue(value.toString()); - return this; - } + if(value instanceof MonthDay){ + writeQuoteStrValue(value.toString()); + return this; } final String format = (null == config) ? null : config.getDateFormat(); diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java index 7e600a7ba..f6be2e764 100755 --- a/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java @@ -18,7 +18,7 @@ public class Issue2572Test { weeks.add(DayOfWeek.MONDAY); final JSONObject obj = new JSONObject(); obj.set("weeks", weeks); - Assert.assertEquals("{\"weeks\":[\"MONDAY\"]}", obj.toString()); + Assert.assertEquals("{\"weeks\":[1]}", obj.toString()); final Map> monthDays1 = obj.toBean(new TypeReference>>() { }); @@ -31,7 +31,7 @@ public class Issue2572Test { months.add(Month.DECEMBER); final JSONObject obj = new JSONObject(); obj.set("months", months); - Assert.assertEquals("{\"months\":[\"DECEMBER\"]}", obj.toString()); + Assert.assertEquals("{\"months\":[12]}", obj.toString()); final Map> monthDays1 = obj.toBean(new TypeReference>>() { });