Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
property-management
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
property-management
Commits
6c57be68
Commit
6c57be68
authored
Mar 18, 2022
by
chenjunxiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
build(server): 新增Jackson序列化规则配置
parent
14fb87be
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
128 additions
and
0 deletions
+128
-0
jeecg-boot-parent/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/JacksonConfig.java
+128
-0
No files found.
jeecg-boot-parent/jeecg-boot-module-system/src/main/java/org/jeecg/config/init/JacksonConfig.java
0 → 100644
View file @
6c57be68
package
org
.
jeecg
.
config
.
init
;
import
com.chanjx.utils.JsonUtils
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.databind.*
;
import
com.fasterxml.jackson.databind.deser.std.StdDeserializer
;
import
com.fasterxml.jackson.databind.module.SimpleModule
;
import
com.fasterxml.jackson.databind.ser.std.StdSerializer
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.fasterxml.jackson.databind.util.StdDateFormat
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
javax.annotation.PostConstruct
;
import
java.io.IOException
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
/**
* @author 陈俊雄
* @since 2020/7/28
**/
@Configuration
public
class
JacksonConfig
{
@Autowired
private
ObjectMapper
objectMapper
;
@PostConstruct
public
void
init
()
{
// Jackson对LocalDateTime进行支持
final
JavaTimeModule
javaTimeModule
=
new
JavaTimeModule
();
JsonUtils
.
registerModule
(
javaTimeModule
);
objectMapper
.
registerModule
(
javaTimeModule
);
// Jackson序列化Date加上时区
final
StdDateFormat
stdDateFormat
=
new
StdDateFormat
().
withColonInTimeZone
(
true
);
JsonUtils
.
setDateFormat
(
stdDateFormat
);
objectMapper
.
setDateFormat
(
stdDateFormat
);
// 禁用将时间序列化成时间戳
JsonUtils
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
objectMapper
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
}
/**
* 将Long类型字段转Json字符串时转换为String类型防止前端Js精度丢失
*
* @return simpleModule
*/
@Bean
public
Module
getSerializerLong2String
()
{
final
SimpleModule
simpleModule
=
new
SimpleModule
();
simpleModule
.
addSerializer
(
Long
.
class
,
ToStringSerializer
.
instance
);
simpleModule
.
addSerializer
(
Long
.
TYPE
,
ToStringSerializer
.
instance
);
return
simpleModule
;
}
/**
* 将Double类型字段转Json字符串时转换为String类型防止前端Js精度丢失
*
* @return simpleModule
*/
@Bean
public
Module
getSerializerDouble2String
()
{
final
SimpleModule
simpleModule
=
new
SimpleModule
();
simpleModule
.
addSerializer
(
Double
.
class
,
ToStringSerializer
.
instance
);
simpleModule
.
addSerializer
(
Double
.
TYPE
,
ToStringSerializer
.
instance
);
return
simpleModule
;
}
/**
* LocalDateTime序列化、反序列化支持
*
* @return javaTimeModule
*/
@Bean
public
Module
javaTimeModule
()
{
return
new
JavaTimeModule
();
}
/**
* 时间戳与LocalDateTime互转
*
* @return module
*/
// @Bean
public
Module
getSerializerLocalDateTime2Timestamp
()
{
final
SimpleModule
simpleModule
=
new
SimpleModule
();
simpleModule
.
addSerializer
(
LocalDateTime
.
class
,
LocalDateTime2TimestampSerializer
.
instance
);
simpleModule
.
addDeserializer
(
LocalDateTime
.
class
,
Timestamp2LocalDateTimeSerializer
.
instance
);
return
simpleModule
;
}
/**
* LocalDateTime序列化时间戳实现
*/
public
static
class
LocalDateTime2TimestampSerializer
extends
StdSerializer
<
LocalDateTime
>
{
final
static
LocalDateTime2TimestampSerializer
instance
=
new
LocalDateTime2TimestampSerializer
();
protected
LocalDateTime2TimestampSerializer
()
{
super
(
LocalDateTime
.
class
);
}
@Override
public
void
serialize
(
LocalDateTime
value
,
JsonGenerator
gen
,
SerializerProvider
provider
)
throws
IOException
{
gen
.
writeNumber
(
value
.
atZone
(
ZoneId
.
systemDefault
()).
toInstant
().
toEpochMilli
());
}
}
/**
* LocalDateTime反序列化时间戳实现
*/
public
static
class
Timestamp2LocalDateTimeSerializer
extends
StdDeserializer
<
LocalDateTime
>
{
final
static
Timestamp2LocalDateTimeSerializer
instance
=
new
Timestamp2LocalDateTimeSerializer
();
protected
Timestamp2LocalDateTimeSerializer
()
{
super
(
LocalDateTime
.
class
);
}
@Override
public
LocalDateTime
deserialize
(
JsonParser
p
,
DeserializationContext
ctxt
)
throws
IOException
{
return
Instant
.
ofEpochMilli
(
p
.
getValueAsLong
()).
atZone
(
ZoneId
.
systemDefault
()).
toLocalDateTime
();
}
}
}
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