使用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 ...
随机推荐
- JSP 登录与注册的小案例之二(无验证码,前端拦截空参)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- Dapper
前一段做一个技术分享关于dapper的,现在再总结一下,也好长时间没有更新博客了--,用到的东西 Dapper.AutoFac .AutoMapper.FluentValidation: 下面说一下D ...
- laravel5.3----------调度任务以及Artisan
1.在使用的过程中会遇到有些函数不能用需要在php配置文件里面打开: disable_functions = exec,passthru,popen,proc_open,shell_exec,syst ...
- SQL 数据分页查询
最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5 ...
- NLog配置文件根节点
NLog.config 配置文件信息 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi ...
- Super Jumping! Jumping! Jumping!
Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. May ...
- APP开发流程
1.申请一个开发者账号: 2. App的idea形成: 3. App的主要功能设计: 4. App的大概界面构思和设计(使用流程设计): 5. 大功能模块代码编写: 6. 大概的界面模块编写: 7. ...
- Linux下常用yum命令
linux各发行版有多种包管理机制,下面介绍基于RedHat系的yum包管理命令: yum -y install xxx 无需询 ...
- java.sql.SQLException: Incorrect key file for table 'C:\Windows\TEMP\#sql578_6e2_68d.MYI'; try to repair it
java.sql.SQLException: Incorrect key file for table 'C:\Windows\TEMP\#sql578_6e2_68d.MYI'; try to re ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...