JSON解析器之Gson、FastJson、Jackson

2023-11-07

JSON解析器
常见的解析器:Jsonlib,Gson,fastjson,jackson

1.Gson(谷歌)

最好使用最新jar包(百度搜索Gson然后去GitHub上找,或者Maven上也有)

1. JSON转为Java对象

  • 1.引入JAR包
  • 2. 创建Gson对象
    • Gson g = new Gson();
  • 调用" Object obj = g.fromJson(JSON字符串,对象类型.class) ";进行转换

创建一个Student类:

public class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }
}

实例:

public static void main(String[] args) {
        //1. 创建Gson对象
        Gson g = new Gson();
        //2. 转换
        String str = "{\"id\":1,\"name\":\"马保国\",\"age\":56}\n";
        Student student = g.fromJson(str, Student.class);
        System.out.println(student);
        System.out.println("---------------------------");
        //3.集合转换
        String str2 = "{\"id\":1,\"name\":\"马保国\",\"age\":56,\"page\":[\"hello\",\"java\",\"hahaha\"]}\n";
        HashMap data = g.fromJson(str2, HashMap.class);
        List page = (List) data.get("page");//JSON中的数组转出来是ArrayList
        System.out.println(page.get(1));
    }

运行结果:

Student{id=1, name='马保国', age=56}
----------------------------------
java

2.Java对象转换JSON

  • 1.引入JAR包

  • 2. 创建Gson对象

    • Gson g = new Gson();
  • 3.调用" String json = g.toJSON(要转换的对象) "进行转换

实例:

public static void main(String[] args) {
        //1. 创建Gson对象
        Gson g = new Gson();
        //2. 转换
        Student student1 = new Student(1,"马保国",56);
        String str = g.toJson(student1);
        System.out.println(str);
        System.out.println("--------------------------------------------");
        //3. 多个对象转换
        Student student2 = new Student(2,"卢本伟",28);
        Student student3 = new Student(3,"蔡徐坤",15);
        ArrayList<Student> students = new ArrayList<>();
        students.add(student1);
        students.add(student2);
        students.add(student3);
        String str2 = g.toJson(students);
        System.out.println(str2);
    }

运行结果:

{"id":1,"name":"马保国","age":56}
--------------------------------------------
[{"id":1,"name":"马保国","age":56},{"id":2,"name":"卢本伟","age":28},{"id":3,"name":"蔡徐坤","age":15}]

2. FastJson(阿里)

最好使用最新jar包(百度搜索Gson然后去GitHub上找,或者Maven上也有)
1. JSON转为Java对象

  • 1.引入JAR包
  • 2.在需要转换Java对象的位置, 编写如下代码:
    • 类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
    • 或List<类型> list=JSON.parseArray(JSON字符串,类型.class);

实例:

public class Demo4 {
    public static void main(String[] args) {
        String str = "{\"id\":1,\"name\":\"马保国\",\"age\":56}";
        Student student = JSON.parseObject(str, Student.class);
        System.out.println(student);
    }
}

运行结果:

Student{id=1, name='马保国', age=56}

2.Java对象转换JSON

  • 1.引入JAR包
  • 2.在需要转换JSON字符串的位置编写如下代码即可:
    • String json=JSON.toJSONString(要转换的对象);

实例:

public static void main(String[] args) {
    Student student1 = new Student(1,"马保国",56);
    String str = JSON.toJSONString(student1);
    System.out.println(str.length());
}

运行结果:

{"id":1,"name":"马保国","age":56}

注意:

FastJson是靠对象属性的get、Set方法生成josn文件的,没有get、set方法无法生成

3. JackSon

1. JSON转为Java对象

  • 1.导入jackson的相关jar包
  • 2.创建Jackson核心对象 ObjectMapper
  • 3.调用ObjectMapper的相关方法进行转换
    • readValue(json字符串数据,Class)

2. Java对象转换JSON
使用步骤:

  • 1.导入jackson的相关jar包
  • 2.创建Jackson核心对象 ObjectMapper
  • 3.调用ObjectMapper的相关方法进行转换
    • 1.转换方法:
      writeValue(参数1,obj):
      参数1:
      File:将obj对象转换为JSON字符串,并保存到指定的文件中
      Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
      OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
      writeValueAsString(obj):将对象转为json字符串

    • 2.注解:

      1. @JsonIgnore:排除属性。
      2. @JsonFormat:属性值得格式化
        @JsonFormat(pattern = “yyyy-MM-dd”)
    • 3.复杂java对象转换

      1. List:数组
      2. Map:对象格式一致
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON解析器之Gson、FastJson、Jackson 的相关文章

随机推荐

  • 免费的mathematica

    这里说的不是破解版 而是mathematica官方推出的免费版 没有笔记本界面等一些功能 可以在命令行使用 不过可以配置jupyter使用啊 安装 直接按照官方的提示安装就好了 http support wolfram com kb 460
  • 数据库核心

    package com example moni tab import android content ContentValues import android database Cursor import android database
  • taro不同的项目中使用不同版本的taro-cli

    这里写目录标题 preface 解决方案 1 局部安装 tarojs cli 2 测试 局部是否可以使用 tarojs cli preface 我有两个 taro 项目 写的时间前后差距半年多了 现在 taro 版本不一致 分别是 1 3
  • WTL 界面设计篇(CSkinDialog)

    头文件声明 CSkinDialog h pragma once include
  • Yolov5 优化,包括Yolov8 c2f模块

    目录 各种技巧实战测试 decouple head yolo中添加 Yolov5 Yolov7加入Yolov8 c2f模块 小目标涨点 1 加入backbone 2 加入head 各种技巧实战测试 基于Yolov5的道路缺陷识别 加入CVP
  • keil5调试代码常见的警告与错误整理

    1 warning 1295 D Deprecated declaration run c give arg types void run c 原函数 void run c void 改正后 对比前面声明的函数 发现是括号少了一个void
  • Spring Cloud架构的各个组件的原理分析

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • vue之router钩子函数

    模块一 全局导航钩子函数 1 vue router beforeEach 全局前置守卫 beforeEach的钩子函数 它是一个全局的before 钩子函数 before each 意思是在 每次每一个路由改变的时候都得执行一遍 它的三个参
  • SQL之变量的使用和赋值

    MySQL的用户变量 变量 变量名 比如 var 申明变量 set 变量名 比如 set var 只是申明 不显示 select 变量名 比如 select var 只是申明 显示 select num 字段名 from 表名 where
  • python 人工智能库_基于python的机器学习库 - 全文

    毫无疑问 神经网络和机器学习在过去几年一直是高科技领域最热门的话题之一 这一点很容易看出 因为它们解决了很多真正有趣的用例 如语音识别 图像识别 甚至是乐曲谱写 PyBrain的概念是将一系列的数据处理的算法封装到被称之为Module的模块
  • STM32F407单片机读取USR-WIFI232-B2模块的MAC地址

    最近工程项目需要单片机读取USR WIFI232 B2 WIFI 模块的MAC地址 研究了一下 并成功获取了MAC地址 步骤如下 1 单片机上电 USR WIFI232 B2 WIFI 模块先延时12秒 等待模块准备好 2 单片机给USR
  • 面试小结-那些求职路上的经验分享与感受

    世界那么大 我想去看看 世界那么大 我也想去看看 这个月 小吕完成了一次工作上的跳槽 在这种全民跳槽的月份 小吕的心情显的稍有些浮躁 工作上也怠慢了很多 虽然这个月的工作量也不大 没有心思钻研技术 也不能好好静下心来学习 我不喜欢现在这状态
  • flask昌平区安防摄像头可视化

    flask昌平区安防摄像头可视化 此系统有详细的录屏 下面只是部分截图 需要看完整录屏联系博主 系统开发语言python 框架为flask 数据库mysql 分为爬虫和可视化分析
  • 获取当月天数

    获取当月天数 需要导入import java util Calendar String time 2023 2 14 Calendar calendar Calendar getInstance Date data new SimpleDa
  • osgEarth的Rex引擎原理分析(十)earth文件中都有哪些options

    目标 九 中问题9 通过在earth文件中搜索options 发现主要有这么几种
  • 添加和修改docker容器端口映射的方法

    一 添加docker容器端口映射 以tomcat容器为例 root localhost docker run name mytomcat d p 8888 8080 tomcat name 创建的tomcat镜像名称 d 后台运行 p 将主
  • CTF中phpinfo应注意什么

    CTF中 phpinfo应注意什么 1 allow url fopen和allow url include 这个配置选项可以知道在PHP文件包含中可以使用哪些伪协议 2 PHP版本 3 open basedir 这个配置选项可以知道PHP将
  • eclipse打开之后没有界面

    自己工作的电脑上的eclipse经常打开之后没有界面显示出来 但是后台有eclipse和java的进程在运行 这个时候要进入到当前eclipse选择的工作目录 也就是打不开eclipse界面的那个工作目录 中的 gt metadata pl
  • 深入理解原码、反码和补码及其在计算机中的应用【附代码】

    目录 引言 一 原码 Sign Magnitude 二 反码 One s Complement 三 补码 Two s Complement 四 代码实例 结论 参考资料 引言 在计算机科学中 原码 反码和补码是表示有符号整数的三种常见编码方
  • JSON解析器之Gson、FastJson、Jackson

    文章目录 1 Gson 谷歌 2 FastJson 阿里 3 JackSon JSON解析器 常见的解析器 Jsonlib Gson fastjson jackson 1 Gson 谷歌 最好使用最新jar包 百度搜索Gson然后去GitH