您的位置:首页 > 移动开发 > Android开发

android开发之Gson的使用

2017-05-16 22:43 155 查看
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());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: