文档章节

关于json的二次解析

l
 luckies
发布于 2016/03/01 13:59
字数 538
阅读 8
收藏 0

json字符串如下:

{"data":{"deparments":[{"selected":false,"value":"1","text":"123","group":null},{"selected":false,"value":"2","text":"456","group":null},{"selected":false,"value":"3","text":"心789","group":null},{"selected":false,"value":"4","text":"101","group":null},{"selected":false,"value":"5","text":"1234","group":null},{"selected":false,"value":"6","text":"12143","group":null},{"selected":false,"value":"7","text":"1243458","group":null},{"selected":false,"value":"8","text":"788890","group":null},{"selected":false,"value":"9","text":"456577","group":null},{"selected":false,"value":"10","text":"78799","group":null},{"selected":false,"value":"11","text":"456678","group":null},{"selected":false,"value":"12","text":"36578","group":null}],"userTitles":[{"selected":false,"value":"0","text":"798080","group":null},{"selected":false,"value":"1","text":"23456","group":null},{"selected":false,"value":"2","text":"6788","group":null},{"selected":false,"value":"3","text":"fd","group":null}]},"errorMsg":null,"status":"success"}

 解析的时候需要先解析外层数据然后解析内存数据,但因为程序中用到这种解析方法比较多,所以一般会先写一个BaseEntity类来解析基础类,但是data数据的类型又是不定的,刚开始data类型定的是Object,但是在使用的过程中有时候会出现解析错误,但是如果每次都写一个BaseEntity又会很麻烦,具体什么原因会在有时候错有时候不错,我还不是太清楚,有大神知道的可以告诉我一下。这里直接直接po代码

public class BaseEntity<T> {
 private String status ;
 private String errorMsg ; 
 private T data ;
 public String getStatus() {
  return status;
 }
 public void setStatus(String status) {
  this.status = status;
 }
 public String getErrorMsg() {
  return errorMsg;
 }
 public void setErrorMsg(String errorMsg) {
  this.errorMsg = errorMsg;
 }
 public T getData() {
  return data;
 }
 public void setData(T data) {
  this.data = data;
 }
 
}

开始解析:

OkHttpUtils.get().url(url).build()
    .execute(new StringCallback() {
     @Override
     public void onResponse(String response) {
      Gson gson = new Gson();
      BaseEntity<ListEntity> fromJson = gson.fromJson(response, new TypeToken<ListEntity>>(){}.getType());
      if (fromJson.getStatus().equals("success")) {
       DoctorTitleDepartmentEntity data = fromJson.getData();
       userTitle = data.getUserTitles();
       deparments = data.getDeparments();
      }
     }
     @Override
     public void onError(Request request, Exception e) {
      Log.e("wkk", "error:" + e.getMessage());
     }
    });

实体类:

public class InfoEntity {
 private String value;
 private String text;
 private String group;
 private String selected;
 public PersonInfoEntity(String value, String text, String group, String selected) {
  super();
  this.value = value;
  this.text = text;
  this.group = group;
  this.selected = selected;
 }
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
 public String getText() {
  return text;
 }
 public void setText(String text) {
  this.text = text;
 }
 public String getGroup() {
  return group;
 }
 public void setGroup(String group) {
  this.group = group;
 }
 public String getSelected() {
  return selected;
 }
 public void setSelected(String selected) {
  this.selected = selected;
 }
 
 
}
public class ListEntity implements Serializable {

 private List<InfoEntity> userTitles;
 private List<InfoEntity> deparments;
 public List<PersonInfoEntity> getUserTitles() {
  return userTitles;
 }
 public void setUserTitles(List<PersonInfoEntity> userTitles) {
  this.userTitles = userTitles;
 }
 public List<PersonInfoEntity> getDeparments() {
  return deparments;
 }
 public void setDeparments(List<PersonInfoEntity> deparments) {
  this.deparments = deparments;
 }
}

© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 1
码字总数 538
作品 0
郑州
私信 提问
Python 爬取高校历年分数线

最近一周一直在帮家里小弟看高考志愿,所以更新的没那么频繁了,请大家见谅。 在看各高校的往年分数时,忍不住手痒,想着能不能给它爬下来?哈哈,说干就干! 1 流程分析 之前无意中在这个网...

不正经程序员
07/16
0
0
Android中流行的第三方库资源收集

1、GSON GSON是将JSON解析成POJO的Java库。GSON也可以将POJO解析成JSON。 2、OkHttp OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默认情况下,OKHttp会自动...

jdroid
2014/05/02
0
0
C语言网络框架库--acl

acl 框架库是一个 C 库,主要包含:服务器开发框架、同步/异步网络通讯、常用数据结构、进程池/线程池、流式 xml/json 解析器、http/ping 应用协议等内容; acl 包括以下丰富的常用函数库: ...

郑树新
2012/06/03
21.4K
3
struct2json V1.0 发布,C 结构体与 JSON 互转库

struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,大大降低直接使用 JSON 解析库来实现此类...

armink
2015/11/13
4.7K
8
armink/struct2json

C结构体与 JSON 快速互转库 struct2json struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,...

armink
2015/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
1
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
2
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部