逍遥谷

记录日常的点点滴滴

0%

JSON工具类

Maven引入Jackson

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<properties>
<jackson.version>xxx</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-smile</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>

具体代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

/**
* <p></p>
* @author z```s
* @version 1.0.0
* @since java8
* 2020/5/11 10:45
*/
public class JSON {

private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

public static final String DATE_TIME_FORMAT_01 = "yyyy-MM-dd HH:mm:ss";

public static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATE_TIME_FORMAT_01);

static {
OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//OBJECT_MAPPER.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
simpleModule.addSerializer(Double.class, ToStringSerializer.instance);
simpleModule.addSerializer(Double.TYPE, ToStringSerializer.instance);
simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT_01)));
simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT_01)));
OBJECT_MAPPER.registerModule(simpleModule);
}

private JSON() {
}

/**
* 将json文件转换为JSON对象
* @param filePath
* @param clazz
* @param <T>
* @return
*/
public static <T> T jsonFileParseObject(String filePath, Class<T> clazz) {
try {
return OBJECT_MAPPER.readValue(new File(filePath), clazz);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

/**
* 对象转换JSON字符串
* @param object
* @return
*/
public static String toJSONString(Object object) {
try {
return OBJECT_MAPPER.writeValueAsString(object);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

/**
* JSON字符串转换对象
* @param text
* @param clazz
* @param <T>
* @return
*/
public static <T> T parseObject(String text, Class<T> clazz) {
try {
return OBJECT_MAPPER.readValue(text, clazz);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

/**
* JSON字符串转换为List
* @param text
* @param <T>
* @return
*/
public static <T> List<T> parseArray(String text) {
TypeReference<ArrayList<T>> typeReference = new TypeReference<ArrayList<T>>() {};
try {
return OBJECT_MAPPER.readValue(text, typeReference);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

/**
* JSON字符串转换为Map
* @param text
* @return
*/
public static <T> LinkedHashMap<String, T> parseMap(String text) {
TypeReference<LinkedHashMap<String, T>> typeReference = new TypeReference<LinkedHashMap<String, T>>() {};
try {
return OBJECT_MAPPER.readValue(text, typeReference);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

}