Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
smart_gov_platform
Commits
af27b65d
Commit
af27b65d
authored
Apr 10, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加反序列化时间,自动识别多种格式
parent
e29cbbe8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
137 additions
and
0 deletions
+137
-0
base-manager/src/main/java/com/mortals/xhx/base/framework/CustomJsonDateDeserializer.java
...ortals/xhx/base/framework/CustomJsonDateDeserializer.java
+37
-0
base-manager/src/main/java/com/mortals/xhx/base/framework/DateJacksonConverter.java
.../com/mortals/xhx/base/framework/DateJacksonConverter.java
+48
-0
base-manager/src/main/java/com/mortals/xhx/base/framework/WxMessageConverter.java
...va/com/mortals/xhx/base/framework/WxMessageConverter.java
+21
-0
base-manager/src/main/java/com/mortals/xhx/base/framework/config/ConverterConfig.java
...om/mortals/xhx/base/framework/config/ConverterConfig.java
+31
-0
No files found.
base-manager/src/main/java/com/mortals/xhx/base/framework/CustomJsonDateDeserializer.java
0 → 100644
View file @
af27b65d
package
com.mortals.xhx.base.framework
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.databind.DeserializationContext
;
import
com.fasterxml.jackson.databind.JsonDeserializer
;
import
org.springframework.util.ObjectUtils
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* @author: zxfei
* @date: 2022/6/30 10:49
* @description:
**/
public
class
CustomJsonDateDeserializer
extends
JsonDeserializer
<
Date
>
{
@Override
public
Date
deserialize
(
JsonParser
jp
,
DeserializationContext
ctxt
)
throws
IOException
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
date
=
jp
.
getText
();
if
(!
ObjectUtils
.
isEmpty
(
date
))
{
try
{
return
format
.
parse
(
date
);
}
catch
(
ParseException
e
)
{
return
null
;
}
}
else
{
return
null
;
}
}
}
base-manager/src/main/java/com/mortals/xhx/base/framework/DateJacksonConverter.java
0 → 100644
View file @
af27b65d
package
com.mortals.xhx.base.framework
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.DeserializationContext
;
import
com.fasterxml.jackson.databind.JsonDeserializer
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.util.Date
;
/**
* 自定义Jackson反序列化日期类型时应用的类型转换器,一般用于@RequestBody接受参数时使用
*/
public
class
DateJacksonConverter
extends
JsonDeserializer
{
private
static
String
[]
pattern
=
new
String
[]{
"yyyy-MM-dd"
,
"yyyy-MM-dd HH:mm"
,
"yyyy-MM-dd HH:mm:ss"
,
"yyyy-MM-dd HH:mm:ss.S"
,
"yyyy.MM.dd"
,
"yyyy.MM.dd HH:mm"
,
"yyyy.MM.dd HH:mm:ss"
,
"yyyy.MM.dd HH:mm:ss.S"
,
"yyyy/MM/dd"
,
"yyyy/MM/dd HH:mm"
,
"yyyy/MM/dd HH:mm:ss"
,
"yyyy/MM/dd HH:mm:ss.S"
};
@Override
public
Date
deserialize
(
JsonParser
p
,
DeserializationContext
ctxt
)
throws
IOException
,
JsonProcessingException
{
Date
targetDate
=
null
;
String
originDate
=
p
.
getText
();
if
(
StringUtils
.
isNotEmpty
(
originDate
))
{
try
{
long
longDate
=
Long
.
valueOf
(
originDate
.
trim
());
targetDate
=
new
Date
(
longDate
);
}
catch
(
NumberFormatException
e
)
{
try
{
targetDate
=
DateUtils
.
parseDate
(
originDate
,
DateJacksonConverter
.
pattern
);
}
catch
(
ParseException
pe
)
{
throw
new
IOException
(
String
.
format
(
"'%s' can not convert to type 'java.util.Date',just support timestamp(type of long) and following date format(%s)"
,
originDate
,
StringUtils
.
join
(
pattern
,
","
)));
}
}
}
return
targetDate
;
}
@Override
public
Class
handledType
()
{
return
Date
.
class
;
}
}
base-manager/src/main/java/com/mortals/xhx/base/framework/WxMessageConverter.java
0 → 100644
View file @
af27b65d
package
com.mortals.xhx.base.framework
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author: zxfei
* @date: 2022/6/28 15:57
* @description:
**/
// 创建一个新的转换器 解析微信的 [text/plain]
public
class
WxMessageConverter
extends
MappingJackson2HttpMessageConverter
{
public
WxMessageConverter
()
{
List
<
MediaType
>
mediaTypes
=
new
ArrayList
<>();
mediaTypes
.
add
(
MediaType
.
TEXT_PLAIN
);
setSupportedMediaTypes
(
mediaTypes
);
}
}
\ No newline at end of file
base-manager/src/main/java/com/mortals/xhx/base/framework/config/ConverterConfig.java
0 → 100644
View file @
af27b65d
package
com.mortals.xhx.base.framework.config
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.mortals.xhx.base.framework.DateJacksonConverter
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
@Configuration
public
class
ConverterConfig
{
@Bean
public
DateJacksonConverter
dateJacksonConverter
()
{
return
new
DateJacksonConverter
();
}
@Bean
public
Jackson2ObjectMapperFactoryBean
jackson2ObjectMapperFactoryBean
(
DateJacksonConverter
dateJacksonConverter
)
{
Jackson2ObjectMapperFactoryBean
jackson2ObjectMapperFactoryBean
=
new
Jackson2ObjectMapperFactoryBean
();
jackson2ObjectMapperFactoryBean
.
setDeserializers
(
dateJacksonConverter
);
return
jackson2ObjectMapperFactoryBean
;
}
@Bean
public
MappingJackson2HttpMessageConverter
mappingJackson2HttpMessageConverter
(
ObjectMapper
objectMapper
)
{
MappingJackson2HttpMessageConverter
mappingJackson2HttpMessageConverter
=
new
MappingJackson2HttpMessageConverter
();
mappingJackson2HttpMessageConverter
.
setObjectMapper
(
objectMapper
);
return
mappingJackson2HttpMessageConverter
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment