Java中JSON字符串进行各种转换的方法小结

 更新时间:2024年01月28日 10:11:59   作者:不归SUN  
Gson和Hutool的JSONUtil都是常用的用于处理JSON数据的工具库,它们提供了简单易用的API来进行JSON字符串的解析、转换和操作,下面就跟随小编一起学习一下如果使用他们实现JSON字符串的各种转换吧

Gson和Hutool的JSONUtil都是常用的用于处理JSON数据的工具库,它们提供了简单易用的API来进行JSON字符串的解析、转换和操作。下面对它们进行一些比较:

  • 功能丰富程度: Gson相对来说是一个更全面的JSON处理库,提供了更多的功能和选项,例如支持自定义序列化和反序列化规则、处理复杂对象等。而Hutool的JSONUtil则是Hutool工具库中的一部分,相对较为简洁,提供了一些基本的JSON操作方法。
  • 使用方式: Gson使用起来比较简单明了,只需创建Gson对象,并通过其提供的方法进行序列化和反序列化操作。而Hutool的JSONUtil也非常易用,可以直接调用其提供的方法进行JSON字符串的解析、转换和操作。
  • 性能: 在性能方面,Gson通常比Hutool的JSONUtil稍微快一些。这是由于Gson在内部使用了很多高级的技术和优化策略来提高效率,但在大多数情况下,性能差异并不会对应用程序产生显著影响。
  • 依赖和引入: Gson是Google开发的库,需要单独引入Gson的依赖包。而Hutool是一个Java工具库,JSONUtil是其中的一个模块,可以通过引入整个Hutool工具库来使用。

在使用选择方面,如果你需要更多高级的JSON操作和自定义功能,或者对性能有较高要求,那么可以选择使用Gson。而如果你只需要进行一些基本的JSON解析、转换和操作,并且希望使用一个轻量级的工具库,那么Hutool的JSONUtil是一个很好的选择。最终选择取决于你的具体需求和偏好。

1.GSON解析器

Gson 是一个开源的 Java 库,用于在 Java 对象和 JSON 数据之间进行序列化和反序列化操作。它可以将 Java 对象转换为 JSON 字符串,并将 JSON 字符串转换为 Java 对象。 可以将字符串转换为复杂的bean,

导入依赖

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

准备需要转换成的实体类

@Data  
public class User{  
private Integer id;  
private String name;  
private String sex;
}

1.字符串转javaBean对象

String str="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";  
Gson gson = new Gson();  
User user = gson.fromJson(str, User.class);

使用 gson.fromJson() 方法将 JSON 字符串 str 转换为 User 对象,并将结果存储在 user 变量中。

注意,User 类需要与 JSON 字符串中的键值对对应,即 name 属性对应 JSON 中的 "name" 键,age 属性对应 JSON 中的 "age" 键。

2.字符串转List

String strList="[{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"},{\"id\":2,\"name\":\"Bob\",\"sex\":\"男\"}]";  
Gson gson = new Gson(); 
List<User> users = gson.fromJson(strList, new TypeToken<List<User>>() {  
}.getType());

此方法参数中的Type类型可以通过Gson包提供TypeToken<>类获取。这个类带有泛型,且这个泛型就是Json串转换成为对象后的类型(此处是List<User>)我们不需要重写这个类中的任何方法,只需要创建这个类的一个匿名内部类并调用getTpye()方法即可。

注意:需要转换的字符串strList,必须是list格式,以"["开头,"]"结尾。不然会报错:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $

3.字符串转map

与转换为List步骤一样,注意:字符串需以"{"开头。

String strList="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";  
Gson gson = new Gson(); 
Map<String, Person> jsonMap = gson.fromJson(mapJson, new TypeToken<Map<String, Person>>() { }.getType());

4.Object转换为JSON字符串

String json = gson.toJson(Object);

使用 gson.toJson() 方法将 各种Java 对象转换成相应的 JSON 字符串。

2.JSONUtil解析

JSONUtil 是 Hutool 中用于处理 JSON 数据的工具类。

导入依赖

<dependency> 
<groupId>cn.hutool</groupId> <artifactId>hutool-json</artifactId> 
<version>5.7.6</version> </dependency>

1.Object转换为JSON字符串

JSONUtil.toJsonStr可以将任意对象(Bean、Map、集合等)直接转换为JSON字符串。 如果对象是有序的Map等对象,则转换后的JSON字符串也是有序的。

String jsonStr = JSONUtil.toJsonStr(Object);

2.JSON字符串转换为map

首先使用 JSONUtil.parseObj() 方法将 JSON 字符串解析为一个 JSONObject 对象,然后使用 toBean() 方法将 JSONObject 对象转换为 HashMap 类型的 Java 对象。

String str="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";
JSONObject jsonObject = JSONUtil.parseObj(str);  
HashMap map = jsonObject.toBean(HashMap.class);

3.JSON字符串转换为List

1.使用 JSONArray.parseArray() 方法将 JSON 字符串转换为 JSONArray 对象; 使用 JSONArray.toList() 方法将 JSONArray 对象转换为 List 对象

String jsonString = "[{\"id\": 1, \"name\": \"Alice\"}, {\"id\": 2, \"name\": \"Bob\"}]";
JSONArray jsonArray = JSONUtil.parseArray(jsonString);
List<Map<String, Object>> list = CollectionUtil.toList(jsonArray, Map.class);

2.JSONUtil.toList()方法需要传入两个参数:一个JsonArray,一个要转换的类型,这里new一个JsonArray

JSONArray jsonArray = new JSONArray(jsonList); 
List<Map> mapList = JSONUtil.toList(jsonArray, Map.class);

3.总结

1.GSON

Object转换为json字符串:gson.toJson(Object)

json字符串转Object: gson.fromJson(strList, new TypeToken<>() { }.getType());

2.JSONUtil

Object转换为json字符串:JSONUtil.toJsonStr(Object)

json字符串转map:

HashMap<String,Integer> hashMap = JSONUtil.parseObj(jsonMap).toBean(HashMap.class);

json字符串转list:

JSONArray jsonArray = new JSONArray(objListJson); List users = JSONUtil.toList(jsonArray, User.class);

或者:

JSONArray jsonArray = JSONUtil.parseArray(jsonString); List list = CollectionUtil.toList(jsonArray, User.class);

以上就是Java中JSON字符串进行各种转换的方法小结的详细内容,更多关于Java JSON字符串转换的资料请关注脚本之家其它相关文章!

相关文章

  • Java异常体系非正常停止和分类

    Java异常体系非正常停止和分类

    这篇文章主要介绍了Java异常体系非正常停止和分类,指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止更多相关内容需要的朋友可以参考一下
    2022-06-06
  • java使用Base64实现文件加密解密

    java使用Base64实现文件加密解密

    这篇文章主要为大家详细介绍了java实现Base64给文件加密、解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 基于Java中Math类的常用函数总结

    基于Java中Math类的常用函数总结

    下面小编就为大家带来一篇基于Java中Math类的常用函数总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 基于Java实现马踏棋盘游戏算法

    基于Java实现马踏棋盘游戏算法

    这篇文章主要为大家详细介绍了基于Java实现马踏棋盘游戏算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • JAVA浮点数计算精度损失底层原理与解决方案

    JAVA浮点数计算精度损失底层原理与解决方案

    本文主要介绍了JAVA浮点数计算精度损失底层原理与解决方案。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 解决 java: 程序包com.baomidou.mybatisplus.annotation不存在

    解决 java: 程序包com.baomidou.mybatisplus.annotation不存在

    在使用Java编写程序时,经常会遇到各种编译错误或运行时异常,本文主要介绍了解决java:程序包com.baomidou.mybatisplus.annotation不存在,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • idea2020.3测试评价及感受

    idea2020.3测试评价及感受

    idea2020.3版本这次变化最大的也就是 UI了完全抛弃了之前一直使用的模板更改成了新的样式,感兴趣的朋友快来下载体验下吧
    2020-10-10
  • java去除已排序数组中的重复元素

    java去除已排序数组中的重复元素

    这篇文章主要为大家详细介绍了java去除已排序数组中重复元素的方法,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 深入学习java内存化和函数式协同

    深入学习java内存化和函数式协同

    这篇文章主要介绍了深入学习java内存化和函数式协同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • 关于国际化、OGNL表达式语言

    关于国际化、OGNL表达式语言

    本篇文章,小编为大家介绍关于国际化、OGNL表达式语言,有需要的朋友可以参考一下
    2013-04-04

最新评论