mirror of
https://gitee.com/jzsw-it/yexuejc-base.git
synced 2025-08-06 10:49:30 +08:00
Compare commits
No commits in common. "3ddd11f9c934b1784525a66d2933f373b460c4c5" and "77a0e29916f2d1d1888d9eff845cf8cc2d41e719" have entirely different histories.
3ddd11f9c9
...
77a0e29916
@ -4,7 +4,6 @@ import com.fasterxml.jackson.core.JsonParser;
|
|||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||||
import com.yexuejc.base.constant.DateConsts;
|
import com.yexuejc.base.constant.DateConsts;
|
||||||
import com.yexuejc.base.util.StrUtil;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -23,9 +22,6 @@ public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {
|
|||||||
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
String timeString = jsonParser.getValueAsString();
|
String timeString = jsonParser.getValueAsString();
|
||||||
if (StrUtil.isEmpty(timeString)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (timeString.contains(DateConsts.BAR)) {
|
if (timeString.contains(DateConsts.BAR)) {
|
||||||
return LocalDate.parse(timeString, DateTimeFormatter.ISO_DATE);
|
return LocalDate.parse(timeString, DateTimeFormatter.ISO_DATE);
|
||||||
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
||||||
|
@ -4,7 +4,6 @@ import com.fasterxml.jackson.core.JsonParser;
|
|||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||||
import com.yexuejc.base.constant.DateConsts;
|
import com.yexuejc.base.constant.DateConsts;
|
||||||
import com.yexuejc.base.util.StrUtil;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -22,9 +21,6 @@ public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
|
|||||||
public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
String timeString = jsonParser.getValueAsString();
|
String timeString = jsonParser.getValueAsString();
|
||||||
if (StrUtil.isEmpty(timeString)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (timeString.contains(DateConsts.DATE_KEY_T)) {
|
if (timeString.contains(DateConsts.DATE_KEY_T)) {
|
||||||
return LocalDateTime.parse(timeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
|
return LocalDateTime.parse(timeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
|
||||||
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
package com.yexuejc.base.converter;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <pre>
|
|
||||||
* json中的“”转String对象时值为null
|
|
||||||
* 例子:{str:""} ->
|
|
||||||
* JsonBean{
|
|
||||||
* public String str;
|
|
||||||
* }
|
|
||||||
* str的值为null [不使用{@link StringDeserializer},str的值为“”]
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* 使用方式:
|
|
||||||
* jsonMapper.registerModule(new SimpleModule().addDeserializer(String.class, new StringDeserializer()));
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author yexuejc
|
|
||||||
* @date 2022/10/08
|
|
||||||
*/
|
|
||||||
public class StringDeserializer extends JsonDeserializer<String> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
|
||||||
throws IOException {
|
|
||||||
String timeString = jsonParser.getValueAsString();
|
|
||||||
if ("".equals(timeString)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return timeString;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +1,16 @@
|
|||||||
package com.yexuejc.base.converter;
|
package com.yexuejc.base.converter;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
||||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
||||||
import com.yexuejc.base.constant.DateConsts;
|
|
||||||
import com.yexuejc.base.util.StrUtil;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||||
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||||
|
import com.yexuejc.base.constant.DateConsts;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* json转LocalDateTime
|
* json转LocalDateTime
|
||||||
*
|
*
|
||||||
@ -23,9 +22,6 @@ public class TimestampDeserializer extends JsonDeserializer<Timestamp> {
|
|||||||
public Timestamp deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
public Timestamp deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
String timeString = jsonParser.getValueAsString();
|
String timeString = jsonParser.getValueAsString();
|
||||||
if (StrUtil.isEmpty(timeString)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (timeString.contains(DateConsts.DATE_KEY_T)) {
|
if (timeString.contains(DateConsts.DATE_KEY_T)) {
|
||||||
return Timestamp.valueOf(LocalDateTime.parse(timeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME));
|
return Timestamp.valueOf(LocalDateTime.parse(timeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME));
|
||||||
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
} else if (timeString.contains(DateConsts.DATE_KEY_AM)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.yexuejc.base.util;
|
package com.yexuejc.base.util;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
@ -41,16 +40,21 @@ public class JsonUtil {
|
|||||||
private static JsonMapper jsonMapper = new JsonMapper();
|
private static JsonMapper jsonMapper = new JsonMapper();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
JsonUtil.setJavaTimeModule(JsonUtil.jsonMapper);
|
|
||||||
JsonUtil.initDefaultObjectMapper(JsonUtil.jsonMapper);
|
JsonUtil.initDefaultObjectMapper(JsonUtil.jsonMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对时间的支持
|
* 初始化ObjectMapper为默认属性
|
||||||
*
|
*
|
||||||
* @param jsonMapper
|
* @param jsonMapper
|
||||||
*/
|
*/
|
||||||
private static void setJavaTimeModule(ObjectMapper jsonMapper) {
|
private static void initDefaultObjectMapper(ObjectMapper jsonMapper) {
|
||||||
|
//值为空时,NON_NULL:舍去字段;ALWAYS:保留字段,值为“”
|
||||||
|
jsonMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
||||||
|
jsonMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
||||||
|
jsonMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
|
||||||
|
jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
jsonMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||||
//设置一下时区,可以和程序同步避免时区问题
|
//设置一下时区,可以和程序同步避免时区问题
|
||||||
jsonMapper.setTimeZone(TimeZone.getDefault());
|
jsonMapper.setTimeZone(TimeZone.getDefault());
|
||||||
jsonMapper.setDateFormat(DateUtil.DATE_TIME_FORMAT);
|
jsonMapper.setDateFormat(DateUtil.DATE_TIME_FORMAT);
|
||||||
@ -67,69 +71,6 @@ public class JsonUtil {
|
|||||||
jsonMapper.registerModule(javaTime);
|
jsonMapper.registerModule(javaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化ObjectMapper为默认属性
|
|
||||||
* <pre>
|
|
||||||
* 1.序列化值为空时,NON_NULL:舍去字段
|
|
||||||
* 2.JsonParser.Feature.ALLOW_SINGLE_QUOTES:解析JSON时允许使用单引号(')作为字符串的引号(true)
|
|
||||||
* 例子:{'localDateTime':'2023-05-29T15:32:03.9770447'}
|
|
||||||
* 3.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES:解析JSON时允许不使用引号作为字符串的引号(true)
|
|
||||||
* 例子:{age:12};适用于基本数据类型
|
|
||||||
* 4.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES:json对应java Bean,数据字段对不齐的情况下不报错(false)
|
|
||||||
* 5.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS(false):用于指定是否将日期类型序列化为时间戳格式。如果启用该特性,则日期类型将被序列化为Unix时间戳(即从1970年1月1日00:00:00 GMT开始的毫秒数)。如果禁用该特性,则日期类型将以其原始格式进行序列化。
|
|
||||||
* 例子(false):"timestamp": "2020-07-08T02:02:55.000+00:00"
|
|
||||||
* 例子(true):"timestamp": 1594236175000
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param jsonMapper
|
|
||||||
*/
|
|
||||||
private static void initDefaultObjectMapper(ObjectMapper jsonMapper) {
|
|
||||||
//值为空时,NON_NULL:舍去字段;ALWAYS:保留字段
|
|
||||||
jsonMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
|
||||||
jsonMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
|
||||||
jsonMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
|
|
||||||
jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
||||||
jsonMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化ObjectMapper的默认属性
|
|
||||||
* <pre>
|
|
||||||
* 1.序列化值为空时,ALWAYS:保留字段,值为“”
|
|
||||||
* 2.JsonParser.Feature.ALLOW_SINGLE_QUOTES:解析JSON时允许使用单引号(')作为字符串的引号(true)
|
|
||||||
* 例子:{'localDateTime':'2023-05-29T15:32:03.9770447'}
|
|
||||||
* 3.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES:解析JSON时允许不使用引号作为字符串的引号(true)
|
|
||||||
* 例子:{age:12};适用于基本数据类型
|
|
||||||
* 4.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES:json对应java Bean,数据字段对不齐的情况下不报错(false)
|
|
||||||
* 5.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS(false):用于指定是否将日期类型序列化为时间戳格式。如果启用该特性,则日期类型将被序列化为Unix时间戳(即从1970年1月1日00:00:00 GMT开始的毫秒数)。如果禁用该特性,则日期类型将以其原始格式进行序列化。
|
|
||||||
* 例子(false):"timestamp": "2020-07-08T02:02:55.000+00:00"
|
|
||||||
* 例子(true):"timestamp": 1594236175000
|
|
||||||
* 6.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT:反序列化值为空时,映射到java Bean 非字符串类型,值为:null
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static ObjectMapper acceptEmptyStringAsNullObject() {
|
|
||||||
JsonMapper jsonMapper = new JsonMapper();
|
|
||||||
setJavaTimeModule(jsonMapper);
|
|
||||||
//值为空时,ALWAYS:保留字段,默认字符串值为“”,对象值为null
|
|
||||||
jsonMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
|
|
||||||
jsonMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
|
||||||
jsonMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
|
|
||||||
jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
||||||
jsonMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
|
||||||
jsonMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
|
|
||||||
|
|
||||||
//值为空时,序列化所有值为“”
|
|
||||||
jsonMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<>() {
|
|
||||||
@Override
|
|
||||||
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
|
|
||||||
jsonGenerator.writeString("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return jsonMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO 待优化
|
//TODO 待优化
|
||||||
public static void initSnakeCase() {
|
public static void initSnakeCase() {
|
||||||
//驼峰下划线互转
|
//驼峰下划线互转
|
||||||
|
Loading…
x
Reference in New Issue
Block a user