Json解析

这篇博客详细介绍了JSON解析,包括对象解析、链表解析(无链表名和含链表名)以及整体解析。强调了对象与bean属性的对应,链表解析的注意事项,以及在解析过程中需添加Gson解析包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的解析

例如

{
"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解析包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值