使用Gson转换json数据为Java对象的一个例子
记录工作中碰到的一个内容。
原料是微信平台的一个接口json数据。
{
"errcode" : 0,
"errmsg" : "ok",
"business_list" : [{
"base_info" : {
"sid" : "",
"business_name" : "xxxxxxxx服务中心",
"branch_name" : "",
"address" : "xx路8桃源山庄酒楼2层",
"telephone" : "0771-56xxxx9",
"categories" : ["公司企业,公司企业"],
"city" : "xx市",
"province" : "xxxx",
"offset_type" : 1,
"longitude" : 108.391288757,
"latitude" : 22.8106937408,
"photo_list" : [],
"introduction" : "创新民营金融模式,服务区域经济发展",
"recommend" : "",
"special" : "",
"open_time" : "08:30-17:30",
"avg_price" : 0,
"poi_id" : "465268573",
"available_state" : 3,
"district" : "青秀区",
"update_status" : 0
}
}
],
"total_count" : 1
}
封装的方法需要将这个数据转换为一个java对象作为返回值。
分析数据结构,先从最简单的开始。首先最里层的数据需要一个base_info辅助对象。
比如说是类StoreBaseInfo:
package com.gxgrh.wechat.wechatapi.responseentity.store; import com.google.gson.annotations.SerializedName; import java.util.List; /**门店信息基础类
* Created by Administrator on 2016/12/7.
*/
public class StoreBaseInfo { private String sid; @SerializedName("business_name")
private String businessName; @SerializedName("branch_name")
private String branchName; private String address; private String telephone; private List<String> categories; private String city; private String province; @SerializedName("offset_type")
private String offsetType; private float longitude; private float latitude; @SerializedName("photo_list")
private List<PhotoUrl> photoList; private String recommend; private String special; private String introduction; @SerializedName("open_time")
private String openTime; @SerializedName("avg_price")
private float avgPrice; @SerializedName("available_state")
private int availableState; @SerializedName("update_status")
private int updateStatus; @SerializedName("poiId")
private String poiId; private String district; }
其次,business_list节点的数据是一个对象数组,所以需要针对数组中的对象再设计一个辅助类。
比如说是类StoreBaseInfoRsp:
import com.google.gson.annotations.SerializedName; /**
* Created by Administrator on 2016/12/7.
*/
public class StoreBaseInfoRsp { @SerializedName("base_info")
private StoreBaseInfo storeBaseInfo; public StoreBaseInfo getStoreBaseInfo() {
return storeBaseInfo;
} public void setStoreBaseInfo(StoreBaseInfo storeBaseInfo) {
this.storeBaseInfo = storeBaseInfo;
}
}
然后就可以得到最终的类。
比如说是类StoreListRsp:
import com.google.gson.annotations.SerializedName; import java.util.List; /** 查询门店列表返回的数据
* Created by Administrator on 2016/12/7.
*/
public class StoreListRsp { private String errcode; private String errmsg; @SerializedName("total_count")
private int totalCount; public int getTotalCount() {
return totalCount;
} public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
} @SerializedName("business_list")
private List<StoreBaseInfoRsp> businessList;
}
利用方法:
StoreListRsp storeListRsp = new Gson().fromJson(jsonResponse ,StoreListRsp.class);
就可以获得类对象了。记得引入Gson包。
使用Gson转换json数据为Java对象的一个例子的更多相关文章
- java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...
- JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
- JSON数据和Java对象的相互转换
JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...
- 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...
- Gson转换json数据为对象
可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试 { "id": 84041462, "lastName": "小华&q ...
- JSON解析器之jackson json数据和java对象转换
- json字符串转java对象
今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...
随机推荐
- AFNETWorking 不支持中文URL请求
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p ...
- SQL 数据分页查询
最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5 ...
- Linux 挂载U盘
命令模式下挂载,图形的一般可以自动识别. #fdisk -l --查看linux 硬盘分区 这个/dev/sdg1 就是我的U盘了,这里挂载的fat格式的 # mount /dev/sdg1 ...
- Windows Phone 七、XML序列化
DataContractSerializer对象 public class Person { public int Id { get; set; } public string Name { get; ...
- android 案例二 登录界面
效果图: 运行图: 总结: 编写这个简单的用户登录界面,主要用到了以下的知识: java基础中的IO流的操作 用以读取.显示用户的信息 Android布局 线性布局和相对布局 数据的存储选在包 ...
- splitFile2SmallFile
1. split file into several files """ this is aa customizable version of the standard ...
- Hdu 1214 圆桌会议
圆桌会议 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- tomcat 开机后台运行
引用:http://jingyan.baidu.com/article/a65957f4b12b8724e77f9b5a.html Tomcat是Apache 软件基金会(Apache Softwar ...
- js基础练习二之简易日历
今天学到了js基础教程3,昨天的课后练习还没来的及做,这个是类似简易日历的小案例,视频还没听完,今晚继续...... 先看效果图: 其实做过前面的Tab选项卡,这个就很好理解了,通过鼠标放在不同月份月 ...
- LAMP环境搭建
安装前说明: 先安装gcc gcc-c++ make 等 可用yum install -y gcc gcc-c++ make 也可以使用rpm安装不过需要注意依赖 1.安装apache 下载链接:ht ...