首页 > 其他分享 >主流json解析框架示例

主流json解析框架示例

时间:2024-07-12 20:43:13浏览次数:13  
标签:name 示例 age json JSON User 解析 user

主流json解析框架示例

jackson、gson、fastjson/fastjson2三种主流json解析框架对比

● 性能:在性能方面,Fastjson通常被认为是最快的JSON解析库,其次是Jackson和Gson,json-lib的性能相对较低。

● API和功能:Jackson提供了非常灵活、强大的API,支持各种高级功能,例如树模型、数据绑定、注解等。Gson也提供了简单易用的API,但功能相对较少。Fastjson提供了丰富的功能和选项,但API可能相对复杂一些。json-lib在功能上相对较弱。

● 社区和支持:Jackson和Gson拥有广泛的社区支持和文档,使用者较多,问题容易获得解答。Fastjson由于其阿里巴巴的背景,在中国有较大的用户群体。目前建议使用Fastjson2。

● 使用场景:对于性能要求较高的场景,可以选择Fastjson。对于需要强大功能和灵活性的场景,Jackson是一个不错的选择。对于简单的JSON解析任务,Gson提供了简单易用的API。json-lib因为其开发已停止,不建议在新项目中使用。

使用示例

引入pom依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.4</version>
</dependency>

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.40</version>
</dependency>

接下来,分别编写使用Jackson、Gson、Fastjson和json-lib的代码来完成以下任务:

  1. 将Java对象转换为JSON字符串;
  2. 将JSON字符串转换为Java对象。
/**
 * @author shui
 * @description 测试Json
 * @created 2024/7/12
 */
public class JsonProcessExample {

    public static void main(String[] args) {
        User user = new User("John", 30);

        // 使用Jackson
        System.out.println("Using Jackson:");
        jacksonDemo(user);

        // 使用Gson
        System.out.println("Using Gson:");
        gsonDemo(user);

        // 使用Fastjson
        System.out.println("Using Fastjson:");
        fastjsonDemo(user);
    }

    private static void jacksonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = objectMapper.readValue(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void gsonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            Gson gson = new Gson();
            String json = gson.toJson(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = gson.fromJson(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void fastjsonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            String json = JSON.toJSONString(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = JSON.parseObject(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
class User{
    private String name;
    private int age;

    // 无参构造函数(必须有)
    public User() {}

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter和setter方法(必须有)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

标签:name,示例,age,json,JSON,User,解析,user
From: https://www.cnblogs.com/shui-notes/p/18299355

相关文章

  • BootStrap TreeView示例
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title></title>......
  • JVM参数系列解析
    -XX:+UseCompressedOopsJavaSE6U23开始,JVM会默认开启压缩指针。JVM之压缩指针(CompressedOops)-XX:+DisableExplicitGC强制禁用手动gcJava虚拟机System.gc()解析CMS系列-XX:+UseParNewGC-XX:+UseParNewGC是一个与Java虚拟机(JVM)垃圾回收策略相关的命令行选项,......
  • 计算机网络 ARP协议(地址解析协议)
            ARP(AddressResolutionProtocol)是一种用于解析网络层地址(如IPv4地址)和数据链路层地址(如MAC地址)之间对应关系的协议。它主要用于在局域网(LAN)中根据目标设备的IP地址获取其对应的MAC地址,以便在数据链路层进行准确的数据传输。ARP协议工作原理:ARP请求和响应......
  • 计算机网络 DNS协议---域名解析
    域名解析是计算机网络中的重要过程,它指的是将人类可读的域名(例如www.example.com)转换为计算机可理解的IP地址(例如192.0.2.1)的过程。这个过程依赖于域名系统(DNS)协议的支持。 DNS协议基本概念DNS(DomainNameSystem)是互联网中用于将域名解析为IP地址的分布式命名系统。它......
  • Avast! Web Shield核心防护:‘aswjsflt.dll’解析与丢失修复全案
    aswjsflt.dll是一个动态链接库(DLL)文件,与Avast!Antivirus软件相关。这个文件是Avast!WebShield的一个组件,负责在浏览器中监控JavaScript代码,防止恶意脚本的执行。aswjsflt.dll作为浏览器的扩展或插件工作,帮助实时保护用户的在线活动免受潜在的网络威胁。当系统提示aswjsflt......
  • Windows系统账户管理核心:‘samsrv.dll’解析与丢失修复全方案
    samsrv.dll是Windows操作系统中的一个重要动态链接库(DLL)文件,它与SAM(SecurityAccountsManager)服务密切相关,负责处理本地和网络账户的管理,包括用户登录、权限验证和密码更改等操作。samsrv.dll文件在Windows系统中扮演着关键角色,尤其是在网络环境下,它帮助处理与网络账户相关的......
  • Visual Studio 2013俄语环境基石:‘mfc120rus.dll’解析与丢失修复全案
    mfc120rus.dll是一个动态链接库(DLL)文件,与MicrosoftFoundationClasses(MFC)相关。MFC是一个广泛使用的C++类库,用于简化Windows应用程序的开发。mfc120rus.dll特别地,是MFC库的俄语版本,用于支持俄语字符集和语言环境,它是MFC12.0版本的一部分,常用于VisualStudio2013中编译的......
  • vue3前端项目结构解析(2024-07-12)
    .├──build#打包脚本相关│  ├──config#配置文件│  ├──generate#生成器│  ├──script#脚本│  └──vite#vite配置├──mock#mock文件夹├──public#公共静态资源目录├──src#主目录│  ├──api#接口......
  • linux-Rsyslog自定义配置json模板
    配置日志接收模板和转发参考:https://www.cnblogs.com/xwupiaomiao/p/17565418.html自定义模板配置文件在主配置文件中添加(rsyslog.conf)include(file=“/etc/rsyslog.d/*.conf”mode=“optional”)方案一在/etc/rsyslog.d/下创建一个配置文件ct3a1.conf#日志模板......
  • 光催化反应仪技术解析与应用前景展望
    光催化反应仪技术解析与应用前景展望随着科学技术的飞速发展,光催化反应仪在科研领域和工业应用中越来越展现出其独特优势。本文将深入探讨光催化反应仪技术的内涵及其在各个领域的应用,以及未来的发展潜力。一、光催化反应仪技术解析光催化反应仪是一种利用光催化技术促进化学反应......