FastJson和Jackson

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>>() {
        });

    }

}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Fastjson是一个Java语言编写的高性能JSON处理器,而Jackson也是一个Java语言编写的JSON处理器,不过它还支持XML、YAML和其他数据格式。Fastjson的性能比Jackson更高效,但是Jackson有更好的编程接口和更多的社区支持。 ### 回答2: fastjsonJackson都是Java中常用的JSON处理库,用于将Java对象与JSON数据进行相互转换。它们有以下几个区别: 1. 性能:fastjson在性能方面相对较强,通常比Jackson更快。这是因为fastjson采用了一些优化策略,如缓存、预热和ASM字节码生成等。而Jackson则相对较慢,但它提供了更多的功能和可自定义的选项。 2. 依赖和体积:fastjson是一个单独的JAR包,不依赖于其他类库,体积相对较小。而Jackson则是一个更庞大的生态系统,由多个JAR包组成,其中可能会依赖于其他类库,因此体积相对较大。 3. 功能和灵活性:Jackson提供了更多的功能和选项,可以更细粒度地控制JSON的生成和解析过程。它支持XML和JSON之间的转换,并提供了一些高级特性,如多态类型处理、数据绑定等。相比之下,fastjson在一些高级功能方面可能相对简单,并且配置选项较少。 4. 社区支持和文档:Jackson有着更广泛的社区支持,有更多的用户和开发者参与,因此它的文档和例子更丰富。同时,Jackson也是Spring框架的默认JSON处理库,因此在Spring项目中使用更加方便。 综上所述,fastjsonJackson都是功能强大的JSON处理库,选择使用哪个取决于具体项目需求和性能要求。如果对性能要求较高,可以选择fastjson;如果需要更多的功能和灵活性,以及更广泛的社区支持,可以选择Jackson

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值