Gson 解析中json字符串数组转换为对象list的方法

使用Gson将json格式字符串数据转化为对象list的情况中,经常出现json格式字符串参数个数与要转换的类对象不匹配情况,如类对象定义有多个参数,但是json格式字符串只有其中的一部分,这时候直接调用Gson 提供的 T fromJson(String json, Type typeOfT)方法转换会报错,会提示json格式转换不匹配错误。

     下面例子的方法可以解决这个问题。

1. 对象类定义:

public class Content implements Serializable {

private int formType;

private String name;

private String country;

private int intergrity;

private int broadcastType;

private String broadcastAge;

private String issuer;

private String language;

private String url;

private int currentTime;

private String contentId;

private String pContentId;

private int next;

public Content() {

}

public int getFormType() {

return this.formType;

}

public void setFormType(int formType) {

this.formType = formType;

}

public String getName() {

return this.name;

}

public void setName(String name) {

this.name = name;

}

public String getCountry() {

return this.country;

}

public void setCountry(String country) {

this.country = country;

}

public int getIntergrity() {

return this.intergrity;

}

public void setIntergrity(int intergrity) {

this.intergrity = intergrity;

}

public int getBroadcastType() {

return this.broadcastType;

}

public void setBroadcastType(int broadcastType) {

this.broadcastType = broadcastType;

}

public String getBroadcastAge() {

return this.broadcastAge;

}

public void setBroadcastAge(String broadcastAge) {

this.broadcastAge = broadcastAge;

}

public String getIssuer() {

return this.issuer;

}

public void setIssuer(String issuer) {

this.issuer = issuer;

}

public String getLanguage() {

return this.language;

}

public void setLanguage(String language) {

this.language = language;

}

public String getUrl() {

return this.url;

}

public void setUrl(String url) {

this.url = url;

}

public int getCurrentTime() {

return this.currentTime;

}

public void setCurrentTime(int currentTime) {

this.currentTime = currentTime;

}

public String getContentId() {

return this.contentId;

}

public void setContentId(String contentId) {

this.contentId = contentId;

}

public String getPContentId() {

return this.pContentId;

}

public void setPContentId(String pContentId) {

this.pContentId = pContentId;

}

public int getNext() {

return this.next;

}

public void setNext(int next) {

this.next = next;

}

public String toString() {

return "Content{formType=" + this.formType + ", name='" + this.name + '\'' + ", country='" + this.country + '\'' + ", intergrity=" + this.intergrity + ", broadcastType=" + this.broadcastType + ", broadcastAge='" + this.broadcastAge + '\'' + ", issuer='" + this.issuer + '\'' + ", language='" + this.language + '\'' + ", url='" + this.url + '\'' + ", currentTime=" + this.currentTime + ", contentId='" + this.contentId + '\'' + ", pContentId='" + this.pContentId + '\'' + ", next=" + this.next + '}';

}

}

2. json 格式字符串数组:

[

{

"Content": [

{

"url": "",

"currentTime": 0,

"contentId": 631584528

}

]

}

]

3. 转换方式为

(1) 新建一个java类,类名称叫DataBean,类代码如下:

public class DataBean {

List <Content > Content;

public List getContent() {

returnContent;

}

public void setContent(List content) {

this.Content= content;

}

}

(2) 调用Gson解析

Gson gson =new Gson();

Type type =newTypeToken<ArrayList<DataBean>>() {

}.getType();

List rs = gson.fromJson(data, type);  //data就是2里面的json格式字符串数组

List<Content> contents = rs.get(0).getContent();

这样就可以获取到Content类型的对象列表,对于json格式字符串数组中缺少的参数,Gson会自动加上,参数值为参数初始化的默认值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容