FastJson和Jackson的对比总结:
// fastjson(阿里巴巴)
//1 对象转json字符串 万能的方法: JSON.toJSONString();
//2 json字符串转对象 万能的方法: JSON.parseObject(jsonStr,new TypeReference<泛型>(){});
// jackson(springmvc)
//1 对象转json字符串 万能的方法: om.writeValueAsString();
//2 json字符串转对象 万能的方法: om.readValue(jsonStr,new TypeReference<泛型>(){});
// 区别:
// System.out.println("fastjson:" + JSON.toJSONString(user));
// System.out.println("jackson:" + om.writeValueAsString(user));
//如果对象中有属性为null,fastjson默认是除null的,转后的字符串是不包含为null的那个属性
//如果转map会丢失属性。jackjson不会丢失属性,jackjson会保留为null的属性。
//fastjson取出来的值不带" "双引号 ,jackjson带" "双引号
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
/**
* @description fastjson(阿里巴巴)
*/
public class FastJsonTest {
public static void main(String[] args) throws Exception {
User user = new User("admin", 20);
User user2 = new User("admin2", 18);
List<String> listStr = new ArrayList<>();
listStr.add("hello");
listStr.add("world");
List<User> listUser = new ArrayList<>();
listUser.add(user);
listUser.add(user2);
Map<String, User> mapUser = new HashMap<>();
mapUser.put("class1", user);
mapUser.put("class2", user2);
// 测试一:javaBean和json字符串
String userJsonStr = JSON.toJSONString(user);
User user11 = JSON.parseObject(userJsonStr, User.class);
User user12 = JSON.parseObject(userJsonStr, new TypeReference<User>() {
});
//测试二:List<String>和json字符串
String listJsonStr = JSON.toJSONString(listStr);
List<String> listStr11 = JSON.parseArray(listJsonStr, String.class);
List<String> listStr12 = JSON.parseObject(listJsonStr, new TypeReference<List<String>>() {
});
listStr12.stream().forEach(System.out::println);
//测试三:List<User>和json字符串
String listUserJsonStr = JSON.toJSONString(listUser);
List<User> listUser11 = JSON.parseArray(listUserJsonStr, User.class);
List<User> listUser12 = JSON.parseObject(listUserJsonStr, new TypeReference<List<User>>() {
});
listUser12.stream().forEach(n -> {
System.out.println(n.getName());
});
//测试四:Map<String, User>和json字符串
String mapUserJsonStr = JSON.toJSONString(mapUser);
Map<String, User> mapUser11 = JSON.parseObject(mapUserJsonStr, new TypeReference<Map<String, User>>() {
});
}
}
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @description jackson(springmvc)
*/
public class JacksonTest {
public static void main(String[] args) throws Exception {
ObjectMapper om = new ObjectMapper();
User user = new User("admin", 20);
User user2 = new User("admin2", 18);
List<String> listStr = new ArrayList<>();
listStr.add("hello");
listStr.add("world");
List<User> listUser = new ArrayList<>();
listUser.add(user);
listUser.add(user2);
Map<String, User> mapUser = new HashMap<>();
mapUser.put("class1", user);
mapUser.put("class2", user2);
// 测试一:javaBean和json字符串
String omUserJsonStr = om.writeValueAsString(user);
User user13 = om.readValue(omUserJsonStr, User.class);
User user14 = om.readValue(omUserJsonStr, new TypeReference<User>() {
});
//测试二:List<String>和json字符串
String omListJsonStr = om.writeValueAsString(listStr);
List<String> listStr13 = om.readValue(omListJsonStr, new TypeReference<List<String>>() {
});
//测试三:List<User>和json字符串
String omListUserJsonStr = om.writeValueAsString(listUser);
List<User> listUser13 = om.readValue(omListUserJsonStr, new TypeReference<List<User>>() {
});
//测试四:Map<String, User>和json字符串
String omMapUserJsonStr = om.writeValueAsString(mapUser);
Map<String, User> mapUser12 = om.readValue(omMapUserJsonStr, new TypeReference<Map<String, User>>() {
});
}
}