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

原料是微信平台的一个接口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. VS2010 LINK1123:failure during conversion to COFF:file invalid or corrupt

    今天用Visual Studio 2010编译一个C工程时突然遇到下面这个编译错误.fatal error LINK1123:failure during conversion to COFF:fil ...

  2. jQuery CSS操作及jQuery的盒子模型

    jQuery CSS-jQuery CSS方法 jQuery CSS-jQuery盒子模型

  3. @RequestMapping注解详解

    @RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.@RequestMapping注解有六个属性,下面进行 ...

  4. UVALive 7146 Defeat the Enemy(贪心+STL)(2014 Asia Shanghai Regional Contest)

    Long long ago there is a strong tribe living on the earth. They always have wars and eonquer others. ...

  5. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍

    这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏.第二部分是D语言最基本的规定,第 ...

  6. Centos Samba 服务器 iptables 和 SElinux 设置

    1.安装samba服务器 # yum install samba 2.配置 # vi /etc/samba/smb.conf security = user (100行左右) 在Share Defin ...

  7. 敏捷项目开源管理软件ScrumBasic(1)

    ScrumBasic 是本人基于Asp.net mvc6 最新的core 1.0写的一个敏捷项目管理软件. 目前只是一个基础版本的功能.只支持1个project. 后期会在这个基础上做扩展和权限管理. ...

  8. 【转】PowerShell入门(十):使用配置文件

    转至:http://www.cnblogs.com/ceachy/archive/2013/03/01/PowerShell_Profile.html 在命令行中定义别名.变量和函数,只是将它们添加在 ...

  9. SVN强制退出,出现被锁的情况解决方法

    1. 打开终端 输入cd Desktop enter之后 输入ls enter键 2. 输入cd  文件名(比如IOS)enter键 3. 输入LS enter 4. find . | grep &q ...

  10. 判断是否IPv6网络

    bool isIPV6Net(const std::string ip_v4, std::string& out_ip) { bool is_v6 = false; struct addrin ...