对象的解析
例如
{
"id": 1,
"name": "网游之灵魂守卫",
"imgPath": "http://192.168.31.43:8080/read/source_images/lt.jpg",
"author": "雷童的仰望",
"tag": "自传",
"desc": "写给曾经的一个女孩子,希望她能好好照顾自己"
}
分析
两个花括号 { } 包装起来的数据解析出来是一个对象,bean的成员属性要与json的一一对应
代码
public class Novel {
private Integer id;
private String name;
private String imgPath;
private String author;
private String tag;
private String desc;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImgPath() {
return imgPath;
}
public void setImgPath(String imgPath) {
this.imgPath = imgPath;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
// json为要解析的数据,格式如上边的而例子
public Novel parseJson(String json) {
Gson gson = new Gson();
Novel novel = gson.fromJson(json, City.class);
return novel ;
}
链表的解析(不包含链表名)
例子
[
{
"id": 1,
"name": "网游之灵魂守卫",
"imgPath": "http://192.168.31.43:8080/read/source_images/lt.jpg",
"author": "雷童的仰望",
"tag": "自传",
"desc": "写给曾经的一个女孩子,希望她能好好照顾自己"
},
{
"id": 26,
"name": "三国演义",
"imgPath": "http://192.168.31.43:8080/read/source_images/sanguo.jpg",
"author": "罗贯中",
"tag": "三国",
"desc": "中国第一部长篇章回体历史演义小说,全名为《三国志通俗演义》"
},
{
"id": 24,
"name": "三个火枪手",
"imgPath": "http://192.168.31.43:8080/read/source_images/san.jpg",
"author": "大仲马",
"tag": "惊心动魄",
"desc": "米莱狄,小说中最大的女反派,外表美丽动人,风情万种,花言巧语,为人心狠手辣,毒如蛇蝎。执行红衣主教大部分阴谋。"
},
{
"id": 16,
"name": "简爱",
"imgPath": "http://192.168.31.43:8080/read/source_images/jian.jpg",
"author": "夏洛蒂·勃朗特",
"tag": "自由平等",
"desc": "有一定影响力的书,百余年来,简·爱的形象是不朽的,而这部小说一直受到世界各国人民的欢迎,专家们也多给出了好评。"
},
{
"id": 3,
"name": "茶花女",
"imgPath": "http://192.168.31.43:8080/read/source_images/cha.jpg",
"author": "亚历山大·小仲马",
"tag": "爱情",
"desc": "玛格丽特原来是个贫苦的乡下姑娘,来到巴黎后,开始了卖笑生涯。由于生得花容月貌,巴黎的贵族公子争相追逐,成了红极一时的“社交明星”。她随身的装扮总是少不了一束茶花,人称“茶花女”。"
},
{
"id": 12,
"name": "虹",
"imgPath": "http://192.168.31.43:8080/read/source_images/hong.jpg",
"author": "劳伦斯",
"tag": "诗意",
"desc": "丰富而深刻的思想内容,史诗般的画面,以及对两性关系的先锋性探索,《虹》已经被公认作现代主义小说的经典作品。"
},
{
"id": 14,
"name": "呼啸山庄",
"imgPath": "http://192.168.31.43:8080/read/source_images/huxiao.jpg",
"author": "艾米莉·勃朗特",
"tag": "争取",
"desc": "英格兰北部,有一座几乎与世隔绝的“呼啸山庄”。主人恩肖收养了一个弃儿.取名希斯克利夫.让他与自己的儿女辛德雷和凯瑟琳一起生活。希斯克利夫与凯瑟琳朝夕相处并萌发了爱情,但辛德雷十分憎恶他。"
}
]
分析
两个中括号 [ ] 包装起来的数据解析出来是一个链表
代码
// Novel类与上边的一样
public List<Novel> parseJson(String json) {
Gson gson = new Gson();
// 解析出来的是一个链表对象
List<Novel> datas = gson.fromJson(json, new TypeToken<List<Novel>>() {}.getType());
return datas;
}
链表的解析(包含链表名)
例子
"zhudas": [
{
"id": 1,
"name": "网游之灵魂守卫",
"imgPath": "http://192.168.31.43:8080/read/source_images/lt.jpg",
"author": "雷童的仰望",
"tag": "自传",
"desc": "写给曾经的一个女孩子,希望她能好好照顾自己"
},
{
"id": 17,
"name": "基督山伯爵",
"imgPath": "http://192.168.31.43:8080/read/source_images/jidush.jpg",
"author": "大仲马",
"tag": "复仇",
"desc": "唐泰斯越狱后找到了宝藏,成为巨富,从此化名基督山伯爵(水手森巴),经过精心策划,报答了恩人,惩罚了仇人。充满传奇色彩,奇特新颖,引人入胜。"
}
]
分析
两个中括号 [ ] 包装起来的数据解析出来是一个链表,中括号前边有一个名称,为链表名称,所以就可以看成一个类里边包含着一个链表List,链表的名称为 zhudas (名称必须一样,否则会出错)
代码
public class City {
// 链表名称要与json一一对应
private List<Novel> zhudas;
public List<Novel> getZhudas() {
return zhudas;
}
public void setZhudas(List<Novel> zhudas) {
this.zhudas = zhudas;
}
}
public City parseJson(String json) {
Gson gson = new Gson();
City city = gson.fromJson(json, City.class);
return city;
}
整体的解析
例子
{
"zhudas": [
{
"id": 1,
"name": "网游之灵魂守卫",
"imgPath": "http://192.168.31.43:8080/read/source_images/lt.jpg",
"author": "雷童的仰望",
"tag": "自传",
"desc": "写给曾经的一个女孩子,希望她能好好照顾自己"
},
{
"id": 17,
"name": "基督山伯爵",
"imgPath": "http://192.168.31.43:8080/read/source_images/jidush.jpg",
"author": "大仲马",
"tag": "复仇",
"desc": "唐泰斯越狱后找到了宝藏,成为巨富,从此化名基督山伯爵(水手森巴),经过精心策划,报答了恩人,惩罚了仇人。充满传奇色彩,奇特新颖,引人入胜。"
}
],
"gudians": [
{
"id": 4,
"name": "楚辞",
"imgPath": "http://192.168.31.43:8080/read/source_images/chuci.jpg",
"author": "屈原",
"tag": "诗歌",
"desc": "最早的浪漫主义诗歌总集及浪漫主义文学源头"
},
{
"id": 5,
"name": "春秋左传",
"imgPath": "http://192.168.31.43:8080/read/source_images/chun.jpg",
"author": "左丘明",
"tag": "历史",
"desc": "主要记载了东周前期二百五十四年间各国政治、经济、军事、外交和文化方面的重要事件和重要人物"
},
{
"id": 11,
"name": "汉书",
"imgPath": "http://192.168.31.43:8080/read/source_images/hanshu.jpg",
"author": "班固",
"tag": "历史",
"desc": "纪12篇,主要记载西汉帝王的事迹;表8篇,主要记载汉代的人物事迹等;志10篇,专述典章制度、天文、地理以及各种社会现象;传70篇,主要记载各类人物的生平以及少数民族的历史等。"
},
{
"id": 15,
"name": "三十六计",
"imgPath": "http://192.168.31.43:8080/read/source_images/ji36.jpg",
"author": "军法家",
"tag": "策论",
"desc": "中国古代三十六个兵法策略,语源于南北朝,成书于明清。它是根据中国古代汉族军事思想和丰富的斗争经验总结而成的兵书"
},
{
"id": 27,
"name": "三国志",
"imgPath": "http://192.168.31.43:8080/read/source_images/sanguozhi.jpg",
"author": "陈寿",
"tag": "三国",
"desc": "记载中国三国时代的断代史,同时也是二十四史中评价最高的“前四史”之一。"
}
],
"zhanzhengs": [
{
"id": 7,
"name": "封神演义",
"imgPath": "http://192.168.31.43:8080/read/source_images/feng.jpg",
"author": "许仲琳",
"tag": "神话",
"desc": "姜子牙辅佐周室(周文王、周武王)讨伐商纣的历史为背景,描写了阐教、截教诸仙斗智斗勇、破阵斩将封神的故事"
},
{
"id": 17,
"name": "基督山伯爵",
"imgPath": "http://192.168.31.43:8080/read/source_images/jidush.jpg",
"author": "大仲马",
"tag": "复仇",
"desc": "唐泰斯越狱后找到了宝藏,成为巨富,从此化名基督山伯爵(水手森巴),经过精心策划,报答了恩人,惩罚了仇人。充满传奇色彩,奇特新颖,引人入胜。"
},
{
"id": 1,
"name": "网游之灵魂守卫",
"imgPath": "http://192.168.31.43:8080/read/source_images/lt.jpg",
"author": "雷童的仰望",
"tag": "自传",
"desc": "写给曾经的一个女孩子,希望她能好好照顾自己"
},
{
"id": 40,
"name": "西线无战事",
"imgPath": "http://192.168.31.43:8080/read/source_images/xixian.jpg",
"author": "雷马克",
"tag": "战争",
"desc": "那些陈词滥调的口号即被炸飞了。青年人的理想主义抵抗不住连天的炮火和壕沟里野蛮的搏杀。他们的幻想破灭了。他们的惟一动力就是活下去,他们的精神支柱就是在前线的共同命运中形成的友谊"
},
{
"id": 45,
"name": "这里的黎明静悄悄",
"imgPath": "http://192.168.31.43:8080/read/source_images/zheli.jpg",
"author": "瓦西里耶夫",
"tag": "战争",
"desc": "通过一个凄美的故事,向人们展示战争对人,尤其是对妇女的摧残,对美好生活和人类文明造成的灾难,表达了强烈的反法西斯和反侵略的主题思想和深刻的人性关怀主题"
}
],
"lunbos": [
{
"id": 1,
"imgPath": "http://192.168.31.43:8080/read/source_images/lunbo1.png"
},
{
"id": 1,
"imgPath": "http://192.168.31.43:8080/read/source_images/lunbo2.png"
},
{
"id": 1,
"imgPath": "http://192.168.31.43:8080/read/source_images/lunbo3.png"
}
]
}
分析
json里最外层是一个对象 { },里边是一个个链表 [ ] 与相应的名称,链表里是一个个的对象 { }
代码
// Lunbo、PriceNovel这些类没有贴出来,根据Novel举一反三
public class City {
private List<Lunbo> lunbos;
private List<Novel> zhudas;
private List<Novel> gudians;
private List<Novel> zhanzhengs;
private List<PriceNovel> zhekous;
private List<Novel> frees;
public List<Lunbo> getLunbos() {
return lunbos;
}
public void setLunbos(List<Lunbo> lunbos) {
this.lunbos = lunbos;
}
public List<Novel> getZhudas() {
return zhudas;
}
public void setZhudas(List<Novel> zhudas) {
this.zhudas = zhudas;
}
public List<Novel> getGudians() {
return gudians;
}
public void setGudians(List<Novel> gudians) {
this.gudians = gudians;
}
public List<Novel> getZhanzhengs() {
return zhanzhengs;
}
public void setZhanzhengs(List<Novel> zhanzhengs) {
this.zhanzhengs = zhanzhengs;
}
public List<PriceNovel> getZhekous() {
return zhekous;
}
public void setZhekous(List<PriceNovel> zhekous) {
this.zhekous = zhekous;
}
public List<Novel> getFrees() {
return frees;
}
public void setFrees(List<Novel> frees) {
this.frees = frees;
}
}
public City parseJson(String json) {
Gson gson = new Gson();
City city = gson.fromJson(json, City.class);
return city;
}
注意
请添加Gson解析包