fic null point bug

This commit is contained in:
Looly
2020-04-23 10:07:56 +08:00
parent 2b9fb67cd0
commit 9f40666c95
9 changed files with 116 additions and 32 deletions

View File

@@ -71,22 +71,16 @@ public class JSONConverter implements Converter<JSON> {
}
if(value instanceof JSON) {
JSONDeserializer<?> deserializer = GlobalSerializeMapping.getDeserializer(targetType);
final JSONDeserializer<?> deserializer = GlobalSerializeMapping.getDeserializer(targetType);
if(null != deserializer) {
return (T) deserializer.deserialize((JSON)value);
}
}
Object targetValue;
try {
targetValue = Convert.convert(targetType, value);
} catch (ConvertException e) {
if (ignoreError) {
return null;
}
throw e;
}
final T targetValue = ignoreError ?
Convert.convertQuietly(targetType, value):
Convert.convert(targetType, value);
if (null == targetValue && false == ignoreError) {
if (StrUtil.isBlankIfStr(value)) {
// 对于传入空字符串的情况如果转换的目标对象是非字符串或非原始类型转换器会返回false。
@@ -97,7 +91,7 @@ public class JSONConverter implements Converter<JSON> {
throw new ConvertException("Can not convert {} to type {}", value, ObjectUtil.defaultIfNull(TypeUtil.getClass(targetType), targetType));
}
return (T) targetValue;
return targetValue;
}
@Override

View File

@@ -0,0 +1,38 @@
package cn.hutool.json;
import lombok.Data;
import org.junit.Assert;
import org.junit.Test;
import java.time.LocalDateTime;
/**
* https://gitee.com/loolly/dashboard/issues?id=I1F8M2
*/
public class IssueI1F8M2 {
@Test
public void toBeanTest() {
String jsonStr = "{\"eventType\":\"fee\",\"fwdAlertingTime\":\"2020-04-22 16:34:13\",\"fwdAnswerTime\":\"\"}";
Param param = JSONUtil.toBean(jsonStr, Param.class);
Assert.assertEquals("2020-04-22T16:34:13", param.getFwdAlertingTime().toString());
Assert.assertNull(param.getFwdAnswerTime());
}
// Param类的字段
@Data
static class Param {
/**
* fee表示话单事件
*/
private String eventType;
/**
* 转接呼叫后振铃时间
*/
private LocalDateTime fwdAlertingTime;
/**
* 转接呼叫后应答时间
*/
private LocalDateTime fwdAnswerTime;
}
}