Gson转化—将Gson数据转化为方针实体
最近,因为在调用长途接口时需求解密数据,因而回来的参数一致为以下json格局
{
‘code’:0,
‘msg’:’成功’,
‘sign’:’abcdefghijkl’,
‘timestamp’:1491897441000,
‘数据’:{}
}
首先,传输中的方针实体
user.java
公共类用户{
私有Intid;
私有字符串名称;
.省掉获取集.
@Override
公共字符串字符串
回来用户[id=’id’,name=’name’];
}
}
如果将回来的数据转化为方针,则可能存在以下三种情况:
1.用户方针
2.列表列表方针
3.页面页面
Page.java
公共类页{
保密页面;
私密intsize;
隐私悉数;
私有列表数据;
.省掉获取集.
@Override
公共字符串字符串
回来用户[page=’page’,size=’size’,total=’total’,data=’data’];
}
}
因而,回来data的json有以下三种:
1.方针实体的jsonjson-User
{
‘id’:1,
‘name’:’eric’
}
2.方针实体列表的jsonjson-Listlist
[
{
‘id’:1,
‘name’:’eric’
(,
{
‘id’:2,
‘name’:’john’
}
]
3.分页实体JSonJSon-page页
{
‘page’:1,
‘size’:10,
‘总’:2,
‘data’:[
{
‘id’:1,
‘name’:’eric’
(,
{
‘id’:2,
‘name’:’john’
}
]
}
因而,需求编写公共类来解决上述转化问题
GsonUtils.java
公共类gsonutils{
私有gsonutils(
}
publicstatictfromjson(字符串JSON,Classtype){
Gsongson=newGson(;
returnGSON.FromJSON(JSON,type);
}
publicstaticlistlistfromjson(字符串JSON)。
Gsongson=newGson(;
returnGSON.fromJSON(JSON,newTypeToken(){}.getType));
}
}
测验:
公共类主{
publicstaticvoidmain(字符串[]args){
Stringjson1='{’id’:1,’name’:’eric’};
Stringjson2='[{’id’:1,’name’:’eric’},{’id’:2,’name’33333323365232365292;
Stringjson3='{’page’:1,’size’:10,’total’:2,’data’333365284;65284;id}
useruser=gsonutils.fromJSON(JSON1,User.class);
listlists=gsonutils.listfromjson(JSON2);
pagepage=gsonutils.fromJSON(JSON3,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.classcastexception3360com.Google.gson.internal.linkedtreeemapcanotbecastoswwwwwwwwwwwwwwwwwwwwwwwer.LD
ATSwun.test.main.main(main.Java:27)。
所以咱们把办法listFromJson
publicstaticlistlistfromjson(字符串JSON,类型类型)。
Gsongson=newGson(;
returnGSON.FromJSON(JSON,type);
}
调用时,传递具体的类型
公共类主{
publicstaticvoidmain(字符串[]args){
Stringjson1='{’id’:1,’name’:’eric’};
Stringjson2='[{’id’:1,’name’:’eric’},{’id’:2,’name’33333332365232365292;
Stringjson3='{’page’:1,’size’:10,’total’:2,’data’333365284;65284;id}
useruser=gsonutils.fromJSON(JSON1,User.class);
listlists=gsonutils.listfromjson(JSON2,newTypeToken(){}.getType));
pagepage=gsonutils.fromJSON(JSON3,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]

json

json对象转换为实体类

表单提交表单与表单提交表单略有不同。在这里记录两者的变换。
请求后端时,如果上载的数据中存在文件对象,则必须使用表单提交。在这种情况下,需要将JSON对象转换为formData对象。具体请参照代码
常数格式数据=新格式数据(;object.keys(参数.公式))密钥)={格式数据.应用}密钥,参数););
也可能需要从格式数据迁移到JSON。代码如下所示。
varJSon数据={};formdata.foreach((值,密钥)=JSon数据[密钥]=值);

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。