java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java JSON字符串转换

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

作者:不归SUN

Gson和Hutool的JSONUtil都是常用的用于处理JSON数据的工具库,它们提供了简单易用的API来进行JSON字符串的解析、转换和操作,下面就跟随小编一起学习一下如果使用他们实现JSON字符串的各种转换吧

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

在使用选择方面,如果你需要更多高级的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字符串转换的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文