zoukankan      html  css  js  c++  java
  • JSON

     详细:

    https://www.cnblogs.com/LearnAndGet/p/10009646.html
    //JSONObject解析字符串,转化为对象
    CityPartnerDTO dto = JSONObject.parseObject(middlemanDTO.getBizInfo(), CityPartnerDTO.class);
    //JSON把对象转化为String
    JSON.toJSONString(ids)
     //利用JSON来查看,数据结构
    public static void main(String[] args) {
        System.out.println(JSON.toJSONString(RULES));
    }

    数组可以用List来解析,因为Arraylist底层是数组
    //数组转List
                List<String> openIdList= new ArrayList<>(Arrays.asList(data.getOpenidArray()));

    对象嵌套的解析:

    例如:

     {"code":0,"msg":"","data":[{"module":"接口测试","category_id":"560685e3738a18e0aaf47c1b454ce6b7","category_name":"测试分类","order_no":99,"children":[]}]}

    //发送请求,接口返回结果解析为String
    ResponseEntity<String> responseString = restTemplate.exchange(GETMENU_INTERFACE_URL, HttpMethod.GET, requestEntity, String.class);
    String body = responseString.getBody();
    if(StringUtils.isNotBlank(body)){
                //逐层解析
         JSONObject json = JSONObject.parseObject(body);    //对象解析为JSONObject
                String code = json.get("code").toString();
                String msg = json.get("msg").toString();
    
        JSONArray data = json.getJSONArray("data");      //data是一个数组,解析为JSONArray
    
    
                for (int i = 0; i < data.size(); i++) {       //遍历,得到数组里每一个对象
                    String menu = data.getString(i);
                     JSONObject module2 = JSONObject.parseObject(menu); //对象解析为JSONObject
                    String modulename = module2.getString("module");
                    String category_id = module2.getString("category_id");
                    String category_name = module2.getString("category_name");
                    String order_no = module2.getString("order_no");
                    String children = module2.getString("children");
          }
      }

    结果:

    简单点:fastJson的parseObject方法可以解析嵌套

    JSONObject.parseObject(body, ResponseMenu.class);

    例如:解析字符串:

    {"code":0,"msg":"","data":[{"module":"接口测试","category_id":"560685e3738a18e0aaf47c1b454ce6b7","category_name":"测试分类","order_no":99,"children":[{"category_id":"560685e3738a18e0aaf47c1b454ce6b7","category_name":"测试分类","order_no":99,"children":[{"category_id":"560685e3738a18e0aaf47c1b454ce6b7","category_name":"测试分类","order_no":99,"children":[]}]},{
    "category_id":"560685e3738a18e0aaf47c1b454ce6b7",
    "category_name":"测试分类",
    "order_no":99,
    "children":[]
    }]}]}


    结构是这样的:
    对象的data属性是个数组,数组元素是个对象,
    而数组元素的children属性又是个数组,数组元素又是对象,。。。无限

    解析结果;

    完美解析

     类结构:

    import java.util.List;
    
    public class ResponseMenu {
    
    
        public int code;
    
        public String msg;
    
        public List<Module> data;
    
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public List<Module> getData() {
            return data;
        }
    
        public void setData(List<Module> data) {
            this.data = data;
        }
    }
    import java.util.List;
    
    public class Module {
    
    
    
        /** 模块名称 */
        private String module;
    
        /** 分类id */
        private String category_id;
    
        /** 分类名称 */
        private String category_name;
    
        /** 排序号 */
        private int order_no;
    
        /** 子分类 */
        private List<Children> children;
    
    
        public String getModule() {
            return module;
        }
    
        public void setModule(String module) {
            this.module = module;
        }
    
        public String getCategory_id() {
            return category_id;
        }
    
        public void setCategory_id(String category_id) {
            this.category_id = category_id;
        }
    
        public String getCategory_name() {
            return category_name;
        }
    
        public void setCategory_name(String category_name) {
            this.category_name = category_name;
        }
    
        public int getOrder_no() {
            return order_no;
        }
    
        public void setOrder_no(int order_no) {
            this.order_no = order_no;
        }
    
        public List<Children> getChildren() {
            return children;
        }
    
        public void setChildren(List<Children> children) {
            this.children = children;
        }
    }
    import java.util.List;
    
    public class Children {
    
    
    
    
        /** 分类id */
        private String category_id;
    
        /** 二级分类名称 */
        private String category_name;
    
        /** 排序号 */
        private int order_no;
    
        private List<Children> children;
    
    
        public String getCategory_id() {
            return category_id;
        }
    
        public void setCategory_id(String category_id) {
            this.category_id = category_id;
        }
    
        public String getCategory_name() {
            return category_name;
        }
    
        public void setCategory_name(String category_name) {
            this.category_name = category_name;
        }
    
        public int getOrder_no() {
            return order_no;
        }
    
        public void setOrder_no(int order_no) {
            this.order_no = order_no;
        }
    
        public List<Children> getChildren() {
            return children;
        }
    
        public void setChildren(List<Children> children) {
            this.children = children;
        }
    }
     







    https://www.cnblogs.com/zz-1120-wtenlb/p/7414430.html

  • 相关阅读:
    MySQL 82 张图带你飞
    Docker一个优秀的应用容器
    大数据架构基础知识
    浏览器复杂吗
    5 分钟学懂 SSH 隧道技术
    图解数据分析如何驱动决策
    3D可视化管理推进能源革命
    一文全面解读B端产品和C端产品的差异
    智慧农业解决方案
    Win10删除右键多余选项菜单
  • 原文地址:https://www.cnblogs.com/lvhouhou/p/11973813.html
Copyright © 2011-2022 走看看