Gson的基本介绍和使用

本文介绍了Gson,一个由谷歌提供的Java类库,用于解析JSON数据。文章通过三个部分深入探讨Gson,包括JSON的简介、Gson的特点以及Gson的基本使用方法,帮助开发者更好地理解和应用Gson进行数据交换。

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

JSON是我们在实际开发最常用的数据交换格式,GSON则是谷歌提供的用来解析Json数据的一个Java类库,在进行Gson介绍之前我们通过以下几个部分对Gson进行深入的了解。

一、JSON的简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。用于数据转化传输,通用于PHP、Java、C++、C#、Python等编程语言的数据交换传输。它易于人阅读和编写,同时也易于机器解析和生成。
基本结构:对象、数组

二、GSON简介和特点

GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。
特点:a、快速、高效
    b、代码量少、简洁
    c、面向对象
      d、数据传递和解析方便

三、GSON的基本使用

Json数据如下:
{
    "rating": {
        "max": 10, 
        "numRaters": 348, 
        "average": "7.0", 
        "min": 0
    }, 
    "subtitle": "", 
    "author": [
        "[日] 片山恭一"
    ], 
    "pubdate": "2005-1", 
    "tags": [
        {
            "count": 136, 
            "name": "片山恭一", 
            "title": "片山恭一"
        }, 
        {
            "count": 63, 
            "name": "日本", 
            "title": "日本"
        }, 
        {
            "count": 61, 
            "name": "日本文学", 
            "title": "日本文学"
        }, 
        {
            "count": 38, 
            "name": "小说", 
            "title": "小说"
        }, 
        {
            "count": 32, 
            "name": "满月之夜白鲸现", 
            "title": "满月之夜白鲸现"
        }, 
        {
            "count": 15, 
            "name": "爱情", 
            "title": "爱情"
        }, 
        {
            "count": 8, 
            "name": "純愛", 
            "title": "純愛"
        }, 
        {
            "count": 8, 
            "name": "外国文学", 
            "title": "外国文学"
        }
    ], 
    "origin_title": "", 
    "image": "https://img1.doubanio.com/mpic/s1747553.jpg", 
    "binding": "平装", 
    "translator": [
        "豫人"
    ], 
    "catalog": "
      ", 
    "pages": "180", 
    "images": {
        "small": "https://img1.doubanio.com/spic/s1747553.jpg", 
        "large": "https://img1.doubanio.com/lpic/s1747553.jpg", 
        "medium": "https://img1.doubanio.com/mpic/s1747553.jpg"
    }, 
    "alt": "http://book.douban.com/subject/1220562/", 
    "id": "1220562", 
    "publisher": "青岛出版社", 
    "isbn10": "7543632608", 
    "isbn13": "9787543632608", 
    "title": "满月之夜白鲸现", 
    "url": "http://api.douban.com/v2/book/1220562", 
    "alt_title": "", 
    "author_intro": "", 
    "summary": "那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。", 
    "price": "15.00元"
}
我们解析出其中的title、publisher、summary和数组tags。


1、创建一个android工程,并在AndroidManifest.xml文件上添加网络权限
    <uses-permission android:name="android.permission.INTERNET"/>

2、请求网络数据并进行解析
MainActivity类:
package com.example.gsondemo;

import java.util.ArrayList;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.widget.Toast;

import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.bean.Book;
import com.example.bean.Tag;
import com.google.gson.Gson;

public class MainActivity extends ActionBarActivity
{
	//请求接口
	private String url = "https://api.douban.com/v2/book/1220562";

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		getData();
	}

	/**
	 * 获取网络数据
	 */
	private void getData()
	{
		//创建请求对象
		StringRequest request = new StringRequest(url, new Listener<String>() {

			@Override
			public void onResponse(String response)
			{
				Log.e("info", response);
				dealData(response);
			}
		}, new ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError error)
			{
				Toast.makeText(MainActivity.this, "网络请求出错", Toast.LENGTH_SHORT).show();
			}
		});
		//把请求对象加入请求队列里面
		new Volley().newRequestQueue(getApplicationContext()).add(request);
	}
	
	public void dealData(String result){
		//实例化Gson对象
		Gson gson = new Gson();
		//把json字符串转化为对象
		Book book = gson.fromJson(result, Book.class);
		ArrayList<Tag> list = book.getTags();
		for (int i = 0; i < list.size(); i++)
		{
			Tag tag = list.get(i);
			Log.e("name", tag.getName());
		}
		Toast.makeText(MainActivity.this, "标题:" + book.getTitle() + "  出版社:" + book.getPublisher()
				+ "   Tag:" + book.getTags().size(), 1).show();
	}
}

实体类Book:
package com.example.bean;

import java.util.ArrayList;

public class Book
{
	private String title;//标题
	private String publisher;//出版社
	private String summary;//概要
	private ArrayList<Tag> tags;
	
	public String getTitle()
	{
		return title;
	}
	public void setTitle(String title)
	{
		this.title = title;
	}
	public String getPublisher()
	{
		return publisher;
	}
	public void setPublisher(String publisher)
	{
		this.publisher = publisher;
	}
	public String getSummary()
	{
		return summary;
	}
	public void setSummary(String summary)
	{
		this.summary = summary;
	}
	public ArrayList<Tag> getTags()
	{
		return tags;
	}
	public void setTags(ArrayList<Tag> tags)
	{
		this.tags = tags;
	}
	
}
Tag类:
package com.example.bean;

public class Tag
{
	private String count;
	private String name;
	private String title;
	
	public String getCount()
	{
		return count;
	}
	public void setCount(String count)
	{
		this.count = count;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getTitle()
	{
		return title;
	}
	public void setTitle(String title)
	{
		this.title = title;
	}
	
}

好了,GSON的使用就是那么简单。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值