关于json的二次解析

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;
 }
}

转载于:https://my.oschina.net/u/2600963/blog/626448

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值