JSON 自动处理VO

  • JSON程序类在进行数据的输出的时候里要回归了反射的机制实现了数据的加载
  • 实现基础vo类的输出
package mao.shu.vo;

import java.io.Serializable;

public class Emp implements Serializable {
    private Integer empno;
    private String ename;
    private String job;

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }
}

  • 模拟一个分页情况
  • 处理生成JSON
package mao.shu.jsondemo;

import mao.shu.vo.Emp;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class json_demo4 {
    public static void main(String[] args) {
        //保存三个雇员的信息
        int[] empno = new int[]{1,2,3};
        String[] ename = new String[]{"SMITH","jack","luse"};
        String[] job = new String[]{"maneager","employee","ceo"};
        List<Emp> allEmp = new ArrayList<>();
        for (int i = 0; i < empno.length; i++) {
            Emp vo = new Emp();
            vo.setEmpno(empno[i]);
            vo.setEname(ename[i]);
            vo.setJob(job[i]);
            allEmp.add(vo);
        }

        //定义JSONObject
        JSONObject jsobj = new JSONObject();
        //将list集合直接添加到jsobj中
        jsobj.put("allEmp",allEmp);
        System.out.println(jsobj);
    }
}

  • 运行结果
{"allEmp":[{"empno":1,"ename":"SMITH","job":"maneager"},{"empno":2,"ename":"jack","job":"employee"},{"empno":3,"ename":"luse","job":"ceo"}]}
  • 可以发现JSON处理之中可以自动的帮助用户实现相关的数据对象输出操作,但是这种自动的处理操作,只是根据类中的属性进行控制.
  • 示例:现在对程序进修改,增加Dept类
package mao.shu.vo;

import java.io.Serializable;
import java.util.List;

public class Dept implements Serializable {
    private Integer deptno;
    //一个部门拥有多个雇员
    private List<Emp> allEmp;

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    public List<Emp> getAllEmp() {
        return allEmp;
    }

    public void setAllEmp(List<Emp> allEmp) {
        this.allEmp = allEmp;
    }
}

  • JSON利用反射输出的时候考虑的方式非常的简单,只要有内容,请求内容不为空,就执行输出操作,并且整个过程都是利用反射完成的,同时自己增加了预警机制.
  • 错误的使用
package mao.shu.jsondemo;

import mao.shu.vo.Dept;
import mao.shu.vo.Emp;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class json_demo4 {
    public static void main(String[] args) {
        //保存三个雇员的信息
        int[] empno = new int[]{1,2,3};
        String[] ename = new String[]{"SMITH","jack","luse"};
        String[] job = new String[]{"maneager","employee","ceo"};

        //新增加一个部门
        Dept personnel = new Dept();
        personnel.setDeptno(1001);
        List<Emp> allEmp = new ArrayList<>();
        for (int i = 0; i < empno.length; i++) {
            Emp vo = new Emp();
            vo.setEmpno(empno[i]);
            vo.setEname(ename[i]);
            vo.setJob(job[i]);
            vo.setDept(personnel);
            allEmp.add(vo);
        }
        //添加雇员信息
        personnel.setAllEmp(allEmp);
        //定义JSONObject
        JSONObject jsobj = new JSONObject();
        //将list集合直接添加到jsobj中
        jsobj.put("allEmp",allEmp);
        System.out.println(jsobj);
    }
}

  • 返回的信息

在这里插入图片描述

  • 解决的方式也很简单,只要清除掉Dept和Emp之间的关系数据即可,但是清除关系之后又会显得不标准.
  • 所以从整个的代码最终的观察来看,整个操作之中实际上自动处理b并不方便.

猜你喜欢

转载自blog.csdn.net/qq_43386754/article/details/86284615