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

 

 

 

 解析带有泛型的对象:

 fastJson

ResultMapVo resultMapVo = JSON.parseObject(res, new TypeReference<ResultMapVo<ChannelVo>>(){});

 

 

解析数组

 

public class Student {
    private String name;
    private int grade;
    private int age;
    private String gender;
    //省略get、set方法
}

 

 

//student数组转换成list对象
String student = "[\n" +
"{\n" +
"\"name\": \"Tom\",\n" +
"\"Grade\": 1,\n" +
"\"age\": 11,\n" +
"\"gender\": \"M\"\n" +
"},\n" +
"{\n" +
"\"name\": \"Jerry\",\n" +
"\"Grade\": 1,\n" +
"\"age\": 10,\n" +
"\"gender\": \"M\"\n" +
"}\n" +
"]";

List<Student> studentList = JSONObject.parseArray(student.toString(), Student.class);

 

  

 

使用Gosn

Gson gson = new Gson();

RecommendBean<RecommendListBean> obj = gson.fromJson(jsonString, new TypeToken<RecommendBean<RecommendListBean>>(){}.getType());
RecommendListBean recommendListBean = (RecommendListBean) (obj.getData());

 

 







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

 

posted @ 2019-12-02 22:48  从来没有平凡的时刻  阅读(180)  评论(0编辑  收藏  举报