JSON
2024年11月17日大约 1 分钟
使用
jackson
,导入包<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.16.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.16.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.16.0</version> </dependency>
序列化
//创建jackson核心操作对象ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//将java对象转json格式字符串
String frindStr = mapper.writeValueAsString(对象);
反序列化
//创建jackson核心操作对象ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//将json格式字符串转java对象
对象 对象名 = mapper.readValue(JSON字符串,对象.class);
复杂反序列化
一些Map
、List
集合等进行反序列化时需要在其中写入new TypeReference<T>
Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>(){});
获取序列化后的内容
序列化后使用 mapper.readTree(String)
得到JsonNode
对象,然后通过其内的get(String | int).asText()
获取字符串数据
方法 | 说明 |
---|---|
asText() | 获取字符串 |
asInt() | 获取整形 |
asBoolean() | 获取布尔型 |
asDouble() | 获取浮点型 |
注解
注解 | 说明 |
---|---|
@JsonIgnore | 注解用于排除某个属性,这样该属性就不会被Jackson序列化和反序列化。(作用在属性上) |
@JsonIgnoreProperties | 注解是类注解。在序列化为JSON的时候,@JsonIgnoreProperties({"prop1", "prop2"}) 会忽略其内设置的属性;在从JSON反序列化为Java类的时候,@JsonIgnoreProperties(ignoreUnknown=true) 会忽略所有没有Getter和Setter的属性。该注解在Java类和JSON不完全匹配的时候很有用(作用在类上) |
@JsonIgnoreType | 会排除所有指定类型的属性。(作用在类上) |
@JsonFormat | 属性值格式化 例如:@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GTM+8") (作用在属性上) |
@JsonProperty | 为实体类属性取别名(作用在属性上) |