记录工作中碰到的一个内容。

原料是微信平台的一个接口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对象的一个例子的更多相关文章

  1. java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

    List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...

  2. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

  3. JSON数据和Java对象的相互转换

    JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...

  4. 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

    转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...

  5. Gson转换json数据为对象

    可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试 { "id": 84041462, "lastName": "小华&q ...

  6. JSON解析器之jackson json数据和java对象转换

  7. json字符串转java对象

    今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...

  8. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

随机推荐

  1. iOS,视图相关

    1.移除视图的所以子视图 2.自定义视图(UIView) 3.处理悬浮窗口(类似微信视频),等比缩放 4.自定义前面视图(可以手写字) 5.图片拉伸的几种方式,计算文本占用空间大小 6.UILable ...

  2. Nodes “-1” are listed in ADOP_VALID_NODES table but not in FND_NODES table

    While trying to apply patches to upgrade to 12.2.4, adop failed due to the below errors. Validating ...

  3. 【皇甫】☀Hibernate入门

    说说我们最近的一些事 二期已经过去了,下面迎接的就是二年,据原老师讲解,我们10月份就开始陆续找工作了,虽然他说我们找工作不是问题,可每个人都有自知之明,我也知道我所处的位置,所以我清楚我要怎么做,我 ...

  4. 列表边框column-rule

    column-rule主要是用来定义列与列之间的边框宽度.边框样式和边框颜色.简单点说,就有点类似于常用的border属性.但column-rule是不占用任何空间位置的,在列与列之间改变其宽度不会改 ...

  5. iptables 设置肯限制流量

    1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source ...

  6. 校内通知-Notifications表增加老师,家长,学生发送范围字段

    老师发送范围:TReceiveRange 家长发送范围:PReceiveRange 学生发送范围:SReceiveRange alter table Notifications add TReceiv ...

  7. Oracle EBS APIs

    参考链接: http://blog.csdn.net/pan_tian/article/details/7754598 http://blog.itpub.net/26687597/viewspace ...

  8. Openbox简单支持平铺

    使用和gnome shell同样的热键定义 rc.xml中 <keybind key="W-Up"> <action name="Maximize&qu ...

  9. windows registry => control pannel

    User Variables HKEY_CURRENT_USER\Environment System Variables HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr ...

  10. 误用的volatile

    在嵌入式编程中,有对某地址重复读取两次的操作,如地址映射IO.但如果编译器直接处理p[0] = *a; p[1] = *a这种操作时,往往会忽略后一个,而直接使用前一个已计算的结果.这是有问题的,因为 ...