android开发之Gson的使用

本文介绍如何使用Gson库解析不同结构的JSON数据,包括顶级为对象或列表的情况,并提供了详细的代码示例。

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

Gson是google提供的一个json的处理工具类库。


1、引入包:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;//这个用于解析顶级为list的数据

2、基本的解析方法:顶级就是一个object,每个字段对应一个属性。嵌套的也是object(非list)。

<1>数据

{
  "total": 1,
  "rows": {
    "ItemName": "test",
    "Price": "5.00",
    "SellerId": "1143910260",
    "ItemId": "2087883681",
    "ThumbImg": "test",
    "Remark": "",
    "CreateTime": "2017-04-28 15:50:13",
    "ModifyTime": "2017-05-16 12:02:33"
  },
  "result_code": 0,
  "result_reason": ""
}
<2>创建bean,包括顶级的和嵌套的都要
(1)顶级的bean

public class ItemInfoResult {
	private int total;
	private ItemInfoRow rows;
	private int result_code;
	private String result_reason;
	
	public int getTotal()
	{
		return total;
	}
	public void setTotal(int total)
	{
		this.total = total;
	}
	public ItemInfoRow getRows()
	{
		return rows;
	}
	public void setRows(ItemInfoRow rows)
	{
		this.rows = rows;
	}
	public int getResult_code()
	{
		return result_code;
	}
	public void setResult_code(int result_code)
	{
		this.result_code = result_code;
	}
	public String getResult_reason()
	{
		return result_reason;
	}
	public void setResult_reason(String result_reason)
	{
		this.result_reason = result_reason;
	}
}
(2)嵌套的bean

public class ItemInfoRow {
	private String ItemName;
	private String Price;
	private String SellerId;
	private String ItemId;
	private String ThumbImg;
	private String Remark;
	private String CreateTime;
	private String ModifyTime;
	public String getItemName() {
		return ItemName;
	}
	public void setItemName(String itemName) {
		ItemName = itemName;
	}
	public String getPrice() {
		return Price;
	}
	public void setPrice(String price) {
		Price = price;
	}
	public String getSellerId() {
		return SellerId;
	}
	public void setSellerId(String sellerId) {
		SellerId = sellerId;
	}
	public String getItemId() {
		return ItemId;
	}
	public void setItemId(String itemId) {
		ItemId = itemId;
	}
	public String getThumbImg() {
		return ThumbImg;
	}
	public void setThumbImg(String thumbImg) {
		ThumbImg = thumbImg;
	}
	public String getRemark() {
		return Remark;
	}
	public void setRemark(String remark) {
		Remark = remark;
	}
	public String getCreateTime() {
		return CreateTime;
	}
	public void setCreateTime(String createTime) {
		CreateTime = createTime;
	}
	public String getModifyTime() {
		return ModifyTime;
	}
	public void setModifyTime(String modifyTime) {
		ModifyTime = modifyTime;
	}
}

<3>解析

Gson gson = new Gson();
ItemInfoResult result = gson.fromJson(response, ItemInfoResult.class);
int resultCode = result.getResult_code();
if(resultCode == 0)
{
	ItemInfoRow row = result.getRows();//注意这里可以直接返回嵌套的对象
}else
{
	Log.v(Common.MSG_ZJAVA, "empty!");
}

3、顶级是一个object,嵌套是一个list。

<1>数据

{
  "total": 7,
  "rows": [
    {
      "ItemId": "2050832253",
      "ModifyTime": "2017-04-28 15:29:32"
    },
    {
      "ItemId": "2043038028",
      "ModifyTime": "2017-03-13 19:57:19"
    },
    {
      "ItemId": "2040248571",
      "ModifyTime": "2017-03-13 20:30:34"
    },
    {
      "ItemId": "2040245627",
      "ModifyTime": "2017-03-13 20:03:01"
    },
    {
      "ItemId": "2040244412",
      "ModifyTime": "2017-03-13 20:13:28"
    },
    {
      "ItemId": "2040237405",
      "ModifyTime": "2017-03-13 20:27:16"
    },
    {
      "ItemId": "2087883681",
      "ModifyTime": "2017-05-16 12:02:33"
    }
  ],
  "result_code": 0,
  "result_reason": ""
}
<2>创建bean
(1)顶级的bean

public class ItemTimeResult {
	private int total;
	private List<ItemTimeRow> rows;
	private int result_code;
	private String result_reason;
	
	public int getTotal()
	{
		return total;
	}
	public void setTotal(int total)
	{
		this.total = total;
	}
	public List<ItemTimeRow> getRows()
	{
		return rows;
	}
	public void setRows(List<ItemTimeRow> rows)
	{
		this.rows = rows;
	}
	public int getResult_code()
	{
		return result_code;
	}
	public void setResult_code(int result_code)
	{
		this.result_code = result_code;
	}
	public String getResult_reason()
	{
		return result_reason;
	}
	public void setResult_reason(String result_reason)
	{
		this.result_reason = result_reason;
	}
}
(2)嵌套的bean

public class ItemTimeRow {
	private String ItemId;
	private String ModifyTime;
	
	public String getItemId()
	{
		return ItemId;
	}
	public void setItemId(String itemId)
	{
		ItemId = itemId;
	}
	
	public String getModifyTime()
	{
		return ModifyTime;
	}
	public void setModifyTime(String modifyTime)
	{
		ModifyTime = modifyTime;
	}
}
<3>解析

Gson gson = new Gson();
ItemTimeResult result = gson.fromJson(response, ItemTimeResult.class);
int resultCode = result.getResult_code();
if(resultCode == 0)
{
	List<ItemTimeRow> list = result.getRows();
	for(int i = 0;i < list.size();i++)
	{
		list.get(i).getItemId();//获取id
	}
	
}else
{
	Log.v(Common.MSG_ZJAVA, "test");
}

4、顶级就是一个list

<1>数据

[
  {
    "item_id": "2040245627",
    "quantity": "1",
    "sku_id": "6336713128",
    "sku_title": "test",
    "item_name": "test"
  },
  {
    "item_id": "2040245627",
    "quantity": "2",
    "sku_id": "6336713127",
    "sku_title": "test",
    "item_name": "test"
  }
]
<2>创建bean

注意,这个 顶级的bean为list,不需要创建,我们只要创建嵌套的bean。

public class OrderRowItem {
	private String item_id;
	private int quantity;
	private String sku_id;
	private String sku_title;
	private String item_name;
	public String getItem_id() {
		return item_id;
	}
	public void setItem_id(String item_id) {
		this.item_id = item_id;
	}
	public int getQuantity() {
		return quantity;
	}
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}
	public String getSku_id() {
		return sku_id;
	}
	public void setSku_id(String sku_id) {
		this.sku_id = sku_id;
	}
	public String getSku_title() {
		return sku_title;
	}
	public void setSku_title(String sku_title) {
		this.sku_title = sku_title;
	}
	public String getItem_name() {
		return item_name;
	}
	public void setItem_name(String item_name) {
		this.item_name = item_name;
	}
}
<3>解析

List<OrderRowItem> orderItemList = gson.fromJson(items,new TypeToken<List<OrderRowItem>>(){}.getType());
for(int j = 0;j<orderItemList.size();j++)
{
	OrderRowItem item = orderItemList.get(j);
	Log.v(Common.MSG_ZJAVA, "i="+i+",j="+j+",item_id="+item.getItem_id()+",item_name="+item.getItem_name());
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值