千家信息网

如何进行Java对象与Json的相互转换

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关如何进行Java对象与Json的相互转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。说到Java对象的序列化与反序列化,
千家信息网最后更新 2025年12月02日如何进行Java对象与Json的相互转换

这篇文章将为大家详细讲解有关如何进行Java对象与Json的相互转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

说到Java对象的序列化与反序列化,我们首先想到的应该是Java的Serializable接口,这玩意在两个系统之间的DTO对象里面可能会用到,用于系统之间的数据传输。或者在RPC(远程方法调用)时可能会用到。

但其实若是用于数据传输,xml和json两种数据格式用得更多一些。我在第一家公司上班是也曾经自己封装过Java对象与xml相互转换的工具,你可能会说为什么不用XStream呢,XStream确实好用,但是在Applet环境下可以使用的xml类库也就只有jdom了,连dom4j在Applet环境下都没有权限使用(Java反射的某些特性是需要权限的,Applet的安全机制不允许)。

下面要说的是Java对象与Json的相互转换。目前Java常用的Json类库有3种,即fastjson、jackson和gson,分别介绍如何将一个Java对象转换成Json和将一个Json字符串转换成Java对象,其实它们的用法大同小异。

一、首先看Maven依赖

        com.alibaba        fastjson        1.2.12        com.fasterxml.jackson.core        jackson-core        2.7.4        com.fasterxml.jackson.core        jackson-annotations        2.7.4        com.fasterxml.jackson.core        jackson-databind        2.7.4        com.google.code.gson        gson        2.6.2



二、需要序列化的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);        }}

关于如何进行Java对象与Json的相互转换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

对象 序列 字符 字符串 代码 数据 工具 更多 之间 内容 数据传输 文章 权限 环境 知识 篇文章 系统 传输 不错 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器启动出现bios 普通职工如何做好网络安全 数据库设置默认时间加1年 访问数据库产生异常 购买软件开发费用怎么做账 如何导入json数据到数据库 网络安全交流体会 文献检索实时数据库概念 hp服务器电源板是什么意思 申办软件开发需要什么材料 在校大学生软件开发 天津正规软件开发方法 软件开发培训计划费用 中孚服务器管理 招标 空数据库的相关属性怎么设置 软件开发包括为那几个部分 资兴县电子软件开发培训班 效率高cc防护服务器 软件开发近年企业面试题 泰山鲲鹏服务器管理地址配置 江苏工控软件开发哪家可靠 西藏三维人口管理软件开发 花与剑伴奏软件开发 艺鑫晟互联网科技有限公司电话 网站服务器过期了怎么解决 软件开发时间怎么看 丝路传说90数据库 扬州千丰网络技术支持 实施金融类诈骗和网络安全 击毙视频软件开发
0