Json转list二层解析转换代码实例

 更新时间:2020年12月01日 10:18:00   作者:手撕高达的村长  
这篇文章主要介绍了Json转list二层解析转换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一层结构的数据:

{
  "code": "0",
  "results": {
    "boyTotal": 0,
    "classNumber": 0,
    "enrollmentsTotal": 0,
    "girlTotal": 0,
    "mobile": "15969538305",
    "studentTotal": 0,
    "userCode": "141920370",
    "userName": "杜文兵",
    "userType": "1"
  }
}

二层结构的数据:

{
  "code": "0",
  "results": {
    "arrayList": [
      {
        "boyNumber": 61,
        "classId": "159",
        "className": "17建筑工程技术01",
        "deptName": "建筑工程学院",
        "enrollments": 61,
        "girlNumber": 0,
        "majorName": "建筑工程技术",
        "studentNumber": 61,
        "year": "2017"
      },
      {
        "boyNumber": 55,
        "classId": "208",
        "className": "17建筑工程技术02",
        "deptName": "建筑工程学院",
        "enrollments": 56,
        "girlNumber": 1,
        "majorName": "建筑工程技术",
        "studentNumber": 56,
        "year": "2017"
      },
      {
        "boyNumber": 56,
        "classId": "209",
        "className": "17建筑工程技术03",
        "deptName": "建筑工程学院",
        "enrollments": 56,
        "girlNumber": 0,
        "majorName": "建筑工程技术",
        "studentNumber": 56,
        "year": "2017"
      },
      {
        "boyNumber": 4,
        "classId": "237",
        "className": "17学前教育08",
        "deptName": "人文学院",
        "enrollments": 67,
        "girlNumber": 63,
        "majorName": "学前教育",
        "studentNumber": 67,
        "year": "2017"
      },
      {
        "boyNumber": 4,
        "classId": "238",
        "className": "17学前教育09",
        "deptName": "人文学院",
        "enrollments": 67,
        "girlNumber": 63,
        "majorName": "学前教育",
        "studentNumber": 67,
        "year": "2017"
      },
      {
        "boyNumber": 5,
        "classId": "239",
        "className": "17学前教育10",
        "deptName": "人文学院",
        "enrollments": 67,
        "girlNumber": 62,
        "majorName": "学前教育",
        "studentNumber": 67,
        "year": "2017"
      }
    ],
    "boyTotal": 185,
    "classNumber": 6,
    "enrollmentsTotal": 374,
    "girlTotal": 189,
    "studentTotal": 374,
    "userCode": "131530220"
  }
}

先上代码:

JSONObject obj1 = new JSONObject();
    obj1.put("mobile", "13008662173");
    //查询员工编号
    
    JSONObject userInfo = ToolsWebReq.sendPost(ToolsWebReq.TEACHER_SERVER_BASE_URL + ToolsWebReq.API_QUERYUSERID,obj1);
    
    List<UserInfo> userInfos = (List<UserInfo>) JsonUtils.JsonToList(userInfo.get("results"), new UserInfo());
     
    String userCode = "";
    if(userInfos != null ){
      for (int i = 0; i < userInfos.size(); i++) {
        UserInfo user = userInfos.get(i);
        userCode = user.getUserCode();
      }
      
    }
    System.out.println("userCode="+userCode);
    
    //通过员工编号查询班级数
    List<ClassTeacherE> list2 = null;
        
    JSONObject obj = new JSONObject();
    obj.put("userCode", "131530220");
        
    JSONObject classList = ToolsWebReq.sendPost(ToolsWebReq.TEACHER_SERVER_BASE_URL + ToolsWebReq.API_QUERYCLASSNUM,obj);
    //解析第一层
    JSONObject rs = (JSONObject) classList.get("results");
    //解析第二层
    JSONArray arrayList = (JSONArray) rs.get("arrayList");
    
    List<UserClassInfo> classLists = (List<UserClassInfo>) JsonUtils.JsonToList(rs.get("arrayList"), new UserClassInfo());
    
    System.out.println("classLists.get(0).getClassName()="+classLists.get(0).getClassName());

方法:

package com.xy.common.util;

import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;

public class JsonUtils {

  /**
   * json转对象
   * 
   * @param input
   * @return
   */
  public static List<?> JsonToList(Object object,Object classModel) {
    
    
    JSONArray array = JSONArray.fromObject(object);
    
    List<?>  list2 = net.sf.json.JSONArray.toList(array,classModel, new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据

    return list2;
  }
}

对象:

package com.xy.web.entity;

import java.util.Date;
import javax.persistence.*;

public class UserInfo {

  private String boyTotal;
  
  private String classNumber;
  
  private String enrollmentsTotal;
  
  private String girlTotal;
  
  /**
   * 联系电话
   */
  private String mobile;
  
  private String studentTotal;
  
  /**
   * 用户账号
   */
  private String userCode;
  
  /**
   * userName
   */
  private String userName;
  
  /**
   * 用户类型(userType):1-员工,2-学生
   */
  private String userType;

  public String getBoyTotal() {
    return boyTotal;
  }

  public void setBoyTotal(String boyTotal) {
    this.boyTotal = boyTotal;
  }

  public String getClassNumber() {
    return classNumber;
  }

  public void setClassNumber(String classNumber) {
    this.classNumber = classNumber;
  }

  public String getEnrollmentsTotal() {
    return enrollmentsTotal;
  }

  public void setEnrollmentsTotal(String enrollmentsTotal) {
    this.enrollmentsTotal = enrollmentsTotal;
  }

  public String getGirlTotal() {
    return girlTotal;
  }

  public void setGirlTotal(String girlTotal) {
    this.girlTotal = girlTotal;
  }

  public String getMobile() {
    return mobile;
  }

  public void setMobile(String mobile) {
    this.mobile = mobile;
  }

  public String getStudentTotal() {
    return studentTotal;
  }

  public void setStudentTotal(String studentTotal) {
    this.studentTotal = studentTotal;
  }

  public String getUserCode() {
    return userCode;
  }

  public void setUserCode(String userCode) {
    this.userCode = userCode;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public String getUserType() {
    return userType;
  }

  public void setUserType(String userType) {
    this.userType = userType;
  };

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解决Springboot项目打包后的页面丢失问题(thymeleaf报错)

    解决Springboot项目打包后的页面丢失问题(thymeleaf报错)

    这篇文章主要介绍了解决Springboot项目打包后的页面丢失问题(thymeleaf报错),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java面试之如何获取客户端真实IP

    Java面试之如何获取客户端真实IP

    这篇文章主要给大家介绍了关于Java面试之如何获取客户端真实IP的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • SpringBoot使用Sharding-JDBC实现数据分片和读写分离的方法

    SpringBoot使用Sharding-JDBC实现数据分片和读写分离的方法

    本文主要介绍了SpringBoot使用Sharding-JDBC实现数据分片和读写分离,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java中Bean转Map问题归纳总结

    Java中Bean转Map问题归纳总结

    Java Bean转Map的坑很多,最常见的就是类型丢失和属性名解析错误的问题,下面这篇文章主要给大家介绍了关于Java中Bean转Map问题归纳总结的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Maven依赖junit @Test报错的解决方案

    Maven依赖junit @Test报错的解决方案

    这篇文章主要介绍了Maven依赖junit @Test报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • MyBatis的SUM映射问题及解决

    MyBatis的SUM映射问题及解决

    这篇文章主要介绍了MyBatis的SUM映射问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 基于spring security实现登录注销功能过程解析

    基于spring security实现登录注销功能过程解析

    这篇文章主要介绍了基于spring security实现登录注销功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Scala隐式转换和隐式参数详解

    Scala隐式转换和隐式参数详解

    Scala隐式转换和隐式参数是两个非常强大的功能,它们可以让我们编写更灵活和优雅的代码,但也需要注意一些潜在的问题和风险,这篇文章主要介绍了Scala隐式转换和隐式参数,需要的朋友可以参考下
    2023-04-04
  • 解决spring @ControllerAdvice处理异常无法正确匹配自定义异常

    解决spring @ControllerAdvice处理异常无法正确匹配自定义异常

    这篇文章主要介绍了解决spring @ControllerAdvice处理异常无法正确匹配自定义异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 深入学习java枚举的应用

    深入学习java枚举的应用

    本篇是关于java深入提高学习的相关知识,介绍了枚举的应用等方面内容,有兴趣的朋友参考学习下吧。
    2018-01-01

最新评论