Gson解析和封装

本文详细介绍了如何使用Gson库进行JSON数据的解析和封装。通过一个具体的JSON字符串实例,解释了如何创建对应的Java Bean类,并利用Gson将JSON转换为Java对象。适合初学者参考。

最近和后台交互,对于gson的解析和封装熟悉了很多,为了给新手们一些例子,特意把过程写下来,好了,不废话

先来说说Gson解析吧,看下面一个json串

{
    "data": [
        {
            "goodsName": "纯美床前凳03",
            "modelCode": "纯美床前凳03",
            "packageHight": 122,
            "packageLength": 122,
            "packageWidth": 122,
            "propValues": "566皮,54/85/74#",
            "qty": 1,
            "recordDetailId": "391",
            "skuCode": "LVD00000173"
        }
    ],
    "error": "任务下载成功",
    "success": true,
    "taskNo": "0000017"
}

拿到串后,分析:

1.最外层是个{},所以最外层用一个对象,也就是定义一个类来封装{}里的数据。

2.{}里是一些对象,每个对象按键值对相应匹配,而data这是一个数组对象,所以定义的时候用集合List封装

具体就不做分析,感觉自己的表达能力还是有些欠缺,还是上代码吧,先定义javaBean格式用来匹配Gson的解析

package cn.logistics.huojiwms.entity;

import java.util.List;

/**
 * 
 * @author Administrator 入库字段json解析数据
 */
public class TaskNewEntity {
	public String error;// 返回信息
	public String success;// 请求状态
	public String taskNo;//任务单号
	/** 任务 **/
	public List<Data> data;
	public static class Data {
		public String skuCode;// SkuCode
		public String modelCode;//商品型号
		public String goodsName;//商品名称
		public String packageHight;//包长
		public String packageLength;//包宽
		public String packageWidth;//包高
		public String propValues;//商品属性
		public String qty;//包件数
		public String recordDetailId;//任务明细
		public String getSkuCode() {
			return skuCode;
		}

		public void setSkuCode(String skuCode) {
			this.skuCode = skuCode;
		}


		public String getPackageHight() {
			return packageHight;
		}

		public void setPackageHight(String packageHight) {
			this.packageHight = packageHight;
		}

		public String getPackageLength() {
			return packageLength;
		}

		public void setPackageLength(String packageLength) {
			this.packageLength = packageLength;
		}

		public String getPackageWidth() {
			return packageWidth;
		}

		public void setPackageWidth(String packageWidth) {
			this.packageWidth = packageWidth;
		}

		public String getQty() {
			return qty;
		}

		public void setQty(String qty) {
			this.qty = qty;
		}

		public String getRecordDetailId() {
			return recordDetailId;
		}

		public void setRecordDetailId(String recordDetailId) {
			this.recordDetailId = recordDetailId;
		}

		public String getModelCode() {
			return modelCode;
		}

		public void setModelCode(String modelCode) {
			this.modelCode = modelCode;
		}

		public String getPropValues() {
			return propValues;
		}

		public void setPropValues(String propValues) {
			this.propValues = propValues;
		}

		public String getGoodsName() {
			return goodsName;
		}

		public void setGoodsName(String goodsName) {
			this.goodsName = goodsName;
		}
	}

	public String getError() {
		return error;
	}

	public void setError(String error) {
		this.error = error;
	}

	public String getSuccess() {
		return success;
	}

	public void setSuccess(String success) {
		this.success = success;
	}

	public String getTaskNo() {
		return taskNo;
	}
	public void setTaskNo(String taskNo) {
		this.taskNo = taskNo;
	}

	public List<Data> getData() {
		return data;
	}

	public void setData(List<Data> data) {
		this.data = data;
	}

}

解析就简单了,这就是Gson的强大之处,定义好数据格式,解析只用2行代码

public static Object parserFromJson(Class clazz, String jsonData) {
		try {
			Gson gson = new Gson();
			return gson.fromJson(jsonData, clazz);
		} catch (JsonParseException e) {
			return null;
		}
	}
使用上面的方法来解析时这样做:
<pre name="code" class="java"><pre name="code" class="java">TaskNewEntity <span style="font-family: Arial, Helvetica, sans-serif;"> result = (TaskNewEntity) Parser.parserFromJson(TaskNewEntity.class, content);</span>




没有很详细的描述,生成复杂json也没时间写了,改天再继续,如果有什么复杂的json难解析或者难生成的,可以一起讨论,

邮箱xgpchina@163.com




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值