JSON序列化与反序列化

2023-05-16

一、需要序列化的POJO和初始化代码

以下3种类库的使用均使用下面这个POJO

public class User {
    public User(){}
    private String id;
    private String name;
    private String password;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", password=" + password
                + "]";
    }
}
/**
 * 初始化User对象
 * @return user
 */
private static User initUser(){
    User user = new User();
    user.setId("1");
    user.setName("jison");
    user.setPassword("jison");
    return user;
}

二、fastjson的使用

fastjson的主要工具类是JSON,以下代码实现Java对象的序列化与反序列化

// 将Java对象序列化为Json字符串  
     String objectToJson = JSON.toJSONString(initUser());  
     System.out.println(objectToJson);  
     // 将Json字符串反序列化为Java对象  
     User user = JSON.parseObject(objectToJson, User.class);  
     System.out.println(user);  

三、jackson的使用

jackson我们经常用到的是它的数据绑定包下的ObjectMapper类,以下代码实现Java对象的序列化与反序列化

ObjectMapper objectMapper = new ObjectMapper();  
    // 将Java对象序列化为Json字符串  
    String objectToJson = objectMapper.writeValueAsString(initUser());  
    System.out.println(objectToJson);  
    // 将Json字符串反序列化为Java对象  
    User user = objectMapper.readValue(objectToJson, User.class);  
    System.out.println(user);

四、gson的使用

gson的主要工具类是Gson,使用GsonBuilder构造,以下代码实现Java对象的序列化与反序列化

Gson gson = new GsonBuilder().create();
// 将Java对象序列化为Json字符串
String objectToJson = gson.toJson(initUser());
System.out.println(objectToJson);
// 将Json字符串反序列化为Java对象
User user = gson.fromJson(objectToJson, User.class);
System.out.println(user);

以上3种json类库的完整代码如下:

public class JsonUtils {

    /**
     * 初始化User对象
     * @return user
     */
    private static User initUser(){
        User user = new User();
        user.setId("1");
        user.setName("jison");
        user.setPassword("jison");
        return user;
    }

    public static void main(String[] args) throws Exception {
        // fastjson用法
        fastjson();
        // jackson用法
        jackson();
        // gson用法
        gson();
    }

    private static void fastjson(){
        // 将Java对象序列化为Json字符串
        String objectToJson = JSON.toJSONString(initUser());
        System.out.println(objectToJson);
        // 将Json字符串反序列化为Java对象
        User user = JSON.parseObject(objectToJson, User.class);
        System.out.println(user);
    }

    private static void jackson() throws Exception{
        ObjectMapper objectMapper = new ObjectMapper();
        // 将Java对象序列化为Json字符串
        String objectToJson = objectMapper.writeValueAsString(initUser());
        System.out.println(objectToJson);
        // 将Json字符串反序列化为Java对象
        User user = objectMapper.readValue(objectToJson, User.class);
        System.out.println(user);
    }

    private static void gson(){
        Gson gson = new GsonBuilder().create();
        // 将Java对象序列化为Json字符串
        String objectToJson = gson.toJson(initUser());
        System.out.println(objectToJson);
        // 将Json字符串反序列化为Java对象
        User user = gson.fromJson(objectToJson, User.class);
        System.out.println(user);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON序列化与反序列化 的相关文章

  • softmax,softmax-loss,BP的解释

    本文转载自 xff1a http freemind pluskid org machine learning softmax vs softmax loss numerical stability xff0c 看完这个博客让我对softma
  • ResNeXt算法详解

    论文 xff1a Aggregated Residual Transformations for Deep Neural Networks 论文链接 xff1a https arxiv org abs 1611 05431 PyTorch代
  • YOLO(You Only Look Once)算法详解

    这篇博客主要介绍下YOLO v1算法 xff08 CVPR2016的文章 xff09 YOLO是目前比较流行的object detection算法 xff0c 速度快且结构简单 xff0c 其他的object detection算法如fas
  • FPN(feature pyramid networks)算法讲解

    这篇论文是CVPR2017年的文章 xff0c 采用特征金字塔做目标检测 xff0c 有许多亮点 xff0c 特来分享 论文 xff1a feature pyramid networks for object detection 论文链接
  • DenseNet算法详解

    论文 xff1a Densely Connected Convolutional Networks 论文链接 xff1a https arxiv org pdf 1608 06993 pdf 代码的github链接 xff1a https
  • linux网关下的TC控速

    控制上传下载速度理论方面的相关记录 1 对于TC限速配置方面 xff0c 最关键的要明白 xff0c TC限速实际上是在分析每个经过的IP数据包 xff0c 根据我们给定的限速规则 xff0c 将不同的IP数据包归入到不同的分类中 xff0
  • July 17th 模拟赛C T3 Circle Solution

    空降题目处 外网 点我点我点我 空降题目处 内网 点我点我点我 Description 给定三个点 xff08 不共线 xff09 的坐标 xff0c 要求以这三个点为圆心做三个圆 xff0c 圆两两不相交 xff0c 不包含 xff0c
  • 损失函数改进之Large-Margin Softmax Loss

    最近几年网络效果的提升除了改变网络结构外 xff0c 还有一群人在研究损失层的改进 xff0c 这篇博文要介绍的就是较为新颖的Large Margin softmax loss xff08 L softmax loss xff09 Larg
  • 卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

    我们知道卷积神经网络 xff08 CNN xff09 在图像领域的应用已经非常广泛了 xff0c 一般一个CNN网络主要包含卷积层 xff0c 池化层 xff08 pooling xff09 xff0c 全连接层 xff0c 损失层等 虽然
  • XNOR-Net算法详解

    论文 xff1a XNOR Net ImageNet Classification Using Binary Convolutional Neural Networks 链接 xff1a https arxiv org abs 1603 0
  • PyTorch源码解读之torch.utils.data.DataLoader

    PyTorch中数据读取的一个重要接口是torch utils data DataLoader xff0c 该接口定义在dataloader py脚本中 xff0c 只要是用PyTorch来训练模型基本都会用到该接口 xff0c 该接口主要
  • PANet算法笔记

    论文 xff1a Path Aggregation Network for Instance Segmentation 论文链接 xff1a https arxiv org abs 1803 01534 这篇是CVPR2018关于实例分割
  • Ubuntu 18.04 LTS安装vncserver虚拟网络控制台

    虚拟网络控制台 xff08 VNC xff09 是一个图形桌面共享软件 xff0c 允许您使用键盘和鼠标远程控制另一台计算机 系统环境 服务端 xff1a Ubuntu 18 04 Server LTS客户端 xff1a Windows10
  • 轻松使用 Debian的Linux

    Spiral Linux 就是这样一种发行版 xff0c 它源于 Debian 它的重点在于促进简单性并为最终用户提供开箱即用的特性和功能 如果您是开源操作系统的新手 xff0c 并且想熟悉一个易于使用的 Linux 发行版 xff0c 那
  • 手残也不该敲的命令

    Linux命令是一种很有趣且有用的东西 xff0c 但在你不知道会带来什么后果的时候 xff0c 它又会显得非常危险 所以 xff0c 在输入某些命令前 xff0c 请多多检查再敲回车 rm rf rm rf是删除文件夹和里面附带内容的一种
  • Linux 基金会宣布成立 TLA+ 语言基金会

    Linux 基金会宣布成立 TLA 43 基金会 TLAF xff0c 以促进 TLA 43 编程语言及其 TLA 43 从业者社区的采用和发展 TLA 43 基金会的创始成员包括 AWS 甲骨文和微软 TLA 43 Temporal Lo
  • Linux的这七大认识误区,你千万别有!

    本文罗列了大家对Linux的七大认识误区 xff0c 看看其中那个是你也出现过的 千万别让这些先入为主的观点断送了你体验新事物的机会 Linux的受众群体并不大 对还是错 错 xff01 大错而特错 我承认 xff0c Linux的实际用户
  • oracle隔离级别深究追根

    oracle数据库 xff0c 只有两种隔离级别 xff1a read committed和serializable 简单的说 xff0c read committed是语句级隔离 xff0c serializable是事务级隔离 xff0
  • Solus Linux 改变发展方向

    Solus 是一个独立开发的 Linux 发行版 xff0c 它的一大特色就是 Solus 自创的 Budgie 桌面环境 xff08 最新的 Fedora 也已经新增了这个桌面环境 xff09 xff0c 当然用户也可以选择其他常见的 G
  • uptime 命令介绍

    Linux 小白 xff0c 若对系统管理有兴趣 xff0c 或想成为资深用户 xff0c 就需要对命令行有扎实的功底 你需要知道很多命令 xff0c 其中一个就是 uptime 文本我们会通过一些容易理解的案例来讲解一下这个命令的基本用法

随机推荐

  • 解决CentOS添加新网卡后找不到网卡配置文件

    使用VMware Workstation虚拟机安装好CentOS7虚拟机后 xff0c 添加网卡后CentOS 7无网卡配置文件的问题 xff0c 添加第二块网卡以后 xff0c 进入CentOS 7系统后 xff0c 看不到网卡配置文件
  • 详解将FTP映射至Windows

    在经常使用ftp传输文件的环境中 xff0c 每次上传和下载文件都需要重新连接然后登录是非常繁琐的一件事情 我们可以将FTP空间映射到本地磁盘空间 xff0c 免去输入地址以及账号 密码 方便我们日常中文件的上传和下载 1 双机桌面上的我的
  • Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解

    在电脑Bios设置中 xff0c 有一项 Secure Boot 相关设置 xff0c 很多朋友不知道Secure Boot什么意思 xff0c 也不知道该如何设置 下面本文就来谈谈Secure Boot设置相关的知识 xff0c 需要的朋
  • centos7 RAID磁盘阵列卡驱动安装图文教程

    解决方案 本方案可以支持centos7版本 UEFI模式 选择 Install CentOS Linux 7 xff0c 然后按 e 键 选择添加 linux dd xff0c 然后按 Ctrl 43 x 启动 进入如下图 虚拟光驱弹出系统
  • ubuntu 12.04 配置Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe无线网卡

    03 00 0 Network controller Ralink corp RT3290 Wireless 802 11n 1T 1R PCIe Subsystem Hewlett Packard Company Device 18ec
  • badblocks检查磁盘坏道

    参 数 功 能 s 显示检查进度 v 运行时显示详细的处理信息 w 做写入检测 root 64 localhost badblocks s dev sda2 Checking for bad blocks read only test do
  • 自协商(802.3)原理浅析

    题注 xff1a 在阅读过网上关于自协商的介绍文章 xff0c 在此针对阅读中遇到的疑问进行简单记录和分析 xff01 Q1 网络通信链路空闲时 xff0c 链路上固定发送检测脉冲的是TX 43 xff0c TX xff0c RX 43 x
  • ubuntu安装时姓名、计算机名、用户名的含义

    如有问题 xff0c 请加扣扣群 xff1a 460189483 ubuntu安装时 xff0c 最后一步是设置姓名 计算机名 用户名 xff0c 那么这些名字是什么意思 xff1f 之后又有什么作用呢 xff1f 下面来详解一下 安装最后
  • PB关于数据窗口内字段值改变问题

    1 在创建DW时 xff0c 如果使用select办法 xff0c 并且只查询一张表的话 xff0c PB默认自动提供修改其值 xff0c 程序运行后 xff0c 可以在DW控件内直接修改字段值 xff0c 当然如果要保存数据的话 xff0
  • 我的2016——培训、工作,回首大学

    我是一名计算机专业的本科生 xff0c 2016年7月到12月期间 xff0c 参加专业技能培训学习 在此期间接触一些其他高校的学生 xff0c 我和他们接触期间 xff0c 结合实际情况 xff0c 有以下感想 xff1a 1 在大学期间
  • ADSL Server出错解决一例(战神攻击)

    ADSL Server出现如下大量提示 var log messages Mar 19 16 36 43 ADSLserver kernel ll header ff ff ff ff ff ff 00 48 54 5b 0d 3f 08
  • uboot sf 命令用法

    转自 xff1a https blog csdn net kickxxx article details 56012456 uboot中如果支持spi qspi flash 那么可以使用sf的erase read write命令操作spi
  • 灰度共生(共现)矩阵的求法

    前段时间在写关于图像的作业时 xff0c 出现了灰度共生矩阵的求法问题 于是就上网查资料发现不是很理想 xff0c 翻书查阅也是不同的书籍出现的解法也是不一样 xff0c 上别的课时老师也给我们讲了下 xff0c 但是发现与我所看到的资料上
  • Qt调试问题记录(持续更新)

    目录 前言调试平台调试记录configure报C 43 43 11缺失g 43 43 编译选项不支持 前言 本人调试Qt所遇到的问题均会记录在此 xff0c 方便回溯 调试平台 Qt版本 xff1a 5 12 11Host PC xff1a
  • websocket autobahn jar包的用法

    autobahn 0 5 0 jar 文件的地址 xff1a http pan baidu com s 1slQYcKP 使用websocket好简单方便 xff0c 据一天来我们公司的大神说 xff1a websocket是封装好的成熟的
  • Linux中vnc的配置端口号的修改

    vnc的默认端口是自己配置的 xff0c 并不是这有一个端口号 通过打开 etc sysconfig vncservers 这里就配置了2个桌面 xff0c 一个桌面号是1 xff0c 一个是2 这里的配置的参数 VNCSERVERS 61
  • oracle的sql查询分析函数-高级部分-分析函授over()子句

    oracle的分析函数 xff0c 应该是有一个格式的 function argu1 argu2 over partition by order by windowing clause 这是一个完整的分析函数的格式 我之前用的分析函数 xf
  • 使用docker搭建鸿蒙开发环境

    第一步下载docker https docs docker com engine install windows 版本https desktop docker com win stable amd64 Docker 20Desktop 20
  • 数组

    一 数组中重复的数字 题目描述 xff1a 在一个长度为n的数组里的所有数字都在0到n 1的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字是重复的 也不知道每个数字重复几次 请找出数组中任意一个重复的数字 例如 xff0c
  • JSON序列化与反序列化

    一 需要序列化的POJO和初始化代码 以下3种类库的使用均使用下面这个POJO public class User public User private String id private String name private Stri