Merge pull request #2449 from duhanmin/2447

bug修复 2447 JSONUtil.toBean 当时间戳为Integer时 时间转换有误
This commit is contained in:
Golden Looly 2022-07-16 11:28:03 +08:00 committed by GitHub
commit 8b43bcc1dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 0 deletions

View File

@ -94,6 +94,8 @@ public class TemporalAccessorConverter extends AbstractConverter<TemporalAccesso
protected TemporalAccessor convertInternal(Object value) {
if (value instanceof Long) {
return parseFromLong((Long) value);
} else if (value instanceof Integer) {
return parseFromLong((long) (Integer) value);
} else if (value instanceof TemporalAccessor) {
return parseFromTemporalAccessor((TemporalAccessor) value);
} else if (value instanceof Date) {

View File

@ -0,0 +1,36 @@
package cn.hutool.json;
import org.junit.Assert;
import org.junit.Test;
import java.time.LocalDateTime;
public class Issue2447Test {
@Test
public void addInteger() {
Time time = new Time();
time.setTime(LocalDateTime.of(1970, 1, 2, 10, 0, 1, 0));
String timeStr = JSONUtil.toJsonStr(time);
Assert.assertEquals(timeStr, "{\"time\":93601000}");
Assert.assertEquals(JSONUtil.toBean(timeStr, Time.class).getTime(), time.getTime());
}
static class Time {
private LocalDateTime time;
public LocalDateTime getTime() {
return time;
}
public void setTime(LocalDateTime time) {
this.time = time;
}
@Override
public String toString() {
return time.toString();
}
}
}