一、json字符串和对象、集合的转换
①使用到的相关依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
1. 使用jackson
①JSON字符串 => 对象
ObjectMapper objectMapper = new ObjectMapper();
//json字符串不一定和对象属性一一匹配
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.readValue(s, Obj.class);
tips: 使用ObjectMapper需要注意
// 对象的所有字段全部列入,还是其他的选项,可以忽略null等 objectMapper.setSerializationInclusion(Include.ALWAYS); // 设置Date类型的序列化及反序列化格式 objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 忽略空Bean转json的错误 objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // 忽略未知属性,防止json字符串中存在,java对象中不存在对应属性的情况出现错误 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 注册一个时间序列化及反序列化的处理模块,用于解决jdk8中localDateTime等的序列化问题 objectMapper.registerModule(new JavaTimeModule());
②对象 => JSON字符串
String jsonString1 = objectMapper.writeValueAsString(obj);
2. 使用fastjson
①JSON字符串 => 对象
User user1 = JSONObject.parseObject(jsonuser,User.class);
User user2 = JSON.parseObject(jsonuser,User.class);
②对象 => JSON字符串
String jsonString1 =