首页 > 编程知识 正文

jsonobject遍历方法,json对象转换为实体类

时间:2023-05-06 15:45:21 阅读:132615 作者:3376

Gson转换—将Gson数据转换为对象实体

最近,由于在调用远程接口时需要解密数据,因此返回的参数统一为以下json格式

{

' code':0,

' msg': '成功',

' sign':'abcdefghijkl ',

' timestamp':1491897441000,

'数据' : { }

}

首先,传输中的目标实体

user.java

公共类用户{

私有Int id;

私有字符串名称;

.省略获取集.

@Override

公共字符串字符串

返回用户[ id=' id ',name=' name '];

}

}

如果将返回的数据转换为对象,则可能存在以下三种情况:

1 .用户对象

2 .列表列表对象

3 .页面页面

Page.java

公共类页{

保密页面;

私密int size;

隐私全部;

私有列表数据;

.省略获取集.

@Override

公共字符串字符串

返回用户[ page=' page ',size=' size ',total=' total ',data=' data '];

}

}

因此,返回data的json有以下三种:

1 .目标实体的json json - User

{

' id':1,

' name':'eric '

}

2 .目标实体列表的json json - List list

[

{

' id':1,

' name':'eric '

(,

{

' id':2,

' name':'john '

}

]

3 .分页实体JSon JSon-page页

{

' page':1,

' size':10,

'总' :2,

' data':[

{

' id':1,

' name':'eric '

(,

{

' id':2,

' name':'john '

}

]

}

因此,需要编写公共类来解决上述转换问题

GsonUtils.java

公共类gsonutils {

私有gsonutils (

}

publicstatictfromjson (字符串JSON,Class type ) {

Gson gson=new Gson (;

returnGSON.FromJSON(JSON,type );

}

publicstaticlistlistfromjson (字符串JSON )。

Gson gson=new Gson (;

returnGSON.fromJSON(JSON,new TypeToken () {}.getType ) );

}

}

测试:

公共类主{

publicstaticvoidmain (字符串[ ] args ) {

String json1='{'id':1,'name':'eric'};

String json2='[{'id':1,'name':'eric'},{'id':2, ' name' 33333323365232365292;

String json3='{'page':1,'size':10,'total':2, ' data' 333365284; 65284; id }

useruser=gsonutils.from JSON (JSON 1,User.class );

list lists=gsonutils.listfromjson (JSON2);

page page=gsonutils.from JSON (JSON 3,Page.class );

system.out.println(user: ) user;

system.out.println(lists: ) lists;

system.out.println(page: ) page;

}

}

运行后的结果:

user :用户[ id=1,name=eric]

lists:[{id=1.0,name=eric},{id=2.0,name=john}]

page:User [page=1,size=10,total=2,list=[{id=1.0,name=eric},{id=2.0,name=john}]]

此时,三种格式的json已转换为Object,但这里存在问题。 使用以下方法获取user时,将处理Java反射类型TypeToken通用运行时类型的清除,从而导致错误

useruser=lists.get(0;

exceptioninthread ' main ' Java.lang.classcastexception 3360 com.Google.gson.internal.linkedtreeemapcanotbecastoswwwwwwwwwwwwwwwwwwwwwwwer.LD

ATS wun.test.main.main (main.Java :27 )。

所以我们把方法listFromJson

publicstaticlistlistfromjson (字符串JSON,类型类型)。

Gson gson=new Gson (;

returnGSON.FromJSON(JSON,type );

}

调用时,传递具体的类型

公共类主{

publicstaticvoidmain (字符串[ ] args ) {

String json1='{'id':1,'name':'eric'};

String json2='[{'id':1,'name':'eric'},{'id':2, ' name' 33333332365232365292;

String json3='{'page':1,'size':10,'total':2, ' data' 333365284; 65284; id }

useruser=gsonutils.from JSON (JSON 1,User.class );

list lists=gsonutils.listfromjson (JSON 2,new TypeToken () {}.getType ) );

page page=gsonutils.from JSON (JSON 3,Page.class );

system.out.println(user: ) user;

system.out.println(lists: ) lists;

system.out.println(page: ) page;

useruser1=lists.get(0;

system.out.println(user1: ) user1);

}

}

执行结果如下。

user :用户[ id=1,name=eric]

lists:[User [id=1,name=eric],User [id=2,name=john]]

page:User [page=1,size=10,total=2,data=[{id=1.0,name=eric},{id=2.0,name=john}]]

用户1:用户[ id=1,name=eric]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。