zl程序教程

您现在的位置是:首页 >  其他

当前栏目

将json字符串中数组节点转换为泛型list集合(gson)

2023-09-14 09:04:40 时间
开发中需要将json中节点单独取出某个节点,解析获取数据,此处对json字符串节点中数组节点,转换为泛型list集合,使用gson。 google的gson的pom文件和jar:gson 代码如下: package my.demo.java.z.generic; import java.util.ArrayList; import java.util.List; import

开发中需要将json中节点单独取出某个节点,解析获取数据,此处对json字符串节点中数组节点,转换为泛型list集合,使用gson。

google的gson的pom文件和jar:gson

代码如下:

package my.demo.java.z.generic;

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.google.gson.GsonBuilder;

import com.google.gson.reflect.TypeToken;

 * Gson获取json中的数组节点. br/ 

 * 将数组节点转换为list集合 泛型 . br/ 

 * 泛型类,是在实例化类的时候指明泛型的具体类型. br/ 

 * 泛型方法,是在调用方法的时候指明泛型的具体类型. br/ 

 * @author Tony_tian

 * @time 2016-03-15 09:44:32

 * */

public class GenericMethodsJson2List {

 public static final String START_ARRAY = "[";

 public static final String END_ARRAY = "]";

 * Gson获取json中的数组节点.转换为list集合 泛型 . br/ 

 * @param T 声明一个泛型T

 * @param List T 指明该方法的返回值为泛型T代表类型的list集合

 * @param jsonStr json中的数组节点

 * @param tC 指明泛型T的具体类型,用来创建泛型T代表的类的对象

 * @return 1:正常返回泛型代表具体类型的list集合,2:转换错误则返回null

 * */

 @SuppressWarnings("unchecked")

 public static final T List T json2listT(String jsonStr, Class T tC) {

 //json字符串不能为空

 if(StringUtils.isBlank(jsonStr)) return null;

 //json字符串必须为数组节点类型

 if(!(jsonStr.startsWith(START_ARRAY) jsonStr.endsWith(END_ARRAY))) return null;

 List T listT = null;

 try {

 //创建泛型对象

 T t = tC.newInstance();

 //利用类加载加载泛型的具体类型

 Class T classT = (Class T ) Class.forName(t.getClass().getName());

 List Object listObj = new ArrayList Object 

 //将数组节点中json字符串转换为object对象到Object的list集合

 listObj = new GsonBuilder().create().fromJson(jsonStr, new TypeToken List Object (){}.getType());

 //转换未成功

 if(listObj == null || listObj.isEmpty()) return null;

 listT = new ArrayList T 

 //将Object的list中的的每一个元素中的json字符串转换为泛型代表的类型加入泛型代表的list集合返回

 for (Object obj : listObj) {

 T perT = new GsonBuilder().create().fromJson(obj.toString(), classT);

 listT.add(perT);

 } catch (Exception e) {

 e.printStackTrace();

 return listT;


public static void main(String[] args) { String jsonStr = "[{\"username\":\"点点\",\"memberNo\":1},{\"username\":\"didi\",\"memberNo\":2},{\"username\":\"卡卡\",\"memberNo\":3}]"; List Member listp = json2listT(jsonStr, Member.class); for (Member member : listp) { System.out.println(member.toString()); class Member{ private Integer memberNo; private String username; public Integer getMemberNo() { return memberNo; public String getUsername() { return username; public void setMemberNo(Integer memberNo) { this.memberNo = memberNo; public void setUsername(String username) { this.username = username; @Override public String toString() { StringBuilder su = new StringBuilder(); su.append("\"memberNo\"").append(":").append(this.getMemberNo()); su.append(",").append("\"username\"").append(":").append(this.getUsername()); return su.toString(); }

main执行结果:

"memberNo":1,"username":点点

"memberNo":2,"username":didi

"memberNo":3,"username":卡卡



java中好用的list转json的工具hutool 最近做服务器接口开发的时候遇到的小问题,数据库查询之后的数据怎样快捷的转化为json数据,第一时间想到了查库,查了挺久的,好多都是用代码实现,比较懒,这方面内容代码实现的偏多,虽然确实比较简单,但能快点就快点