FastJson之json字符串与javabean的互相转换

1.基本使用说明

FastJson常用到一下三个类:

(1)JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

(2)JSONObject:fastJson提供的json对象。

(3)JSONArray:fastJson提供json数组对象。

 

2.案例

public class Student {

    private String id;

    @JSONField(name="myName")  //自定义字段名字
    private String name;

    @JSONField(serialize=false)  //是否加入到序列化和反序列化中,true为加入,false为不加入,默认为true
    private Integer age;

    @JSONField(format="yyyy-MM-dd hh:mm:ss")  //格式化时间字段
    private Date birthday;

    private List<Teacher> teacherList;

    private Teacher teacher;

    private Map<String, String> data;

    private List<Map<String, String>> dataList;

    private Integer sex;

    private Float weight;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public List<Teacher> getTeacherList() {
        return teacherList;
    }

    public void setTeacherList(List<Teacher> teacherList) {
        this.teacherList = teacherList;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    public Map<String, String> getData() {
        return data;
    }

    public void setData(Map<String, String> map) {
        this.data = map;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Float getWeight() {
        return weight;
    }

    public void setWeight(Float weight) {
        this.weight = weight;
    }

    public List<Map<String, String>> getDataList() {
        return dataList;
    }

    public void setDataList(List<Map<String, String>> dataList) {
        this.dataList = dataList;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", teacherList=" + teacherList +
                ", teacher=" + teacher +
                ", data=" + data +
                ", dataList=" + dataList +
                ", sex=" + sex +
                ", weight=" + weight +
                '}';
    }

}

 

public class Teacher {

    private String id;

    private String name;

    private Integer age;

    public Teacher() {

    }

    public Teacher(String id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}

 

public class Main {

    public static void main(String[] args) {

        Student stu = new Student();
        initData(stu);
        //bean转为json字符串
        beanToJson(stu);

        //json字符串转为bean
        String jsonStr = "{\"age\":25,\"birthday\":1543657701694,\"data\":{\"1\":\"小罗\",\"2\":\"小嘉\",\"3\":\"小敏\"},\"dataList\":[{\"1\":\"小罗\",\"2\":\"小嘉\",\"3\":\"小敏\"},{\"1\":\"小周\",\"2\":\"小蕾\"}],\"id\":\"007\",\"name\":\"小西\",\"sex\":0,\"teacher\":{\"age\":22,\"id\":\"1\",\"name\":\"佳佳\"},\"teacherList\":[{\"age\":22,\"id\":\"1\",\"name\":\"小明\"},{\"age\":22,\"id\":\"2\",\"name\":\"小红\"},{\"age\":22,\"id\":\"3\",\"name\":\"小志\"}],\"weight\":62.5}";
        jsonToBean(jsonStr);

        //方式2:json字符串转为bean
        jsonToBean2(jsonStr);

    }

    public static void beanToJson(Student stu) {
        //解析为json字符串的时候关闭循环引用
        String jsonStr = JSON.toJSONString(stu, SerializerFeature.DisableCircularReferenceDetect);
        System.out.println(jsonStr);
    }

    public static void jsonToBean(String jsonStr) {
        /** 两种方式反序列化 **/
//        Student stu = JSON.parseObject(jsonStr, Student.class);
        Student stu = JSON.parseObject(jsonStr, new TypeReference<Student>(){});
        System.out.println(stu);
    }

    public static void jsonToBean2(String jsonStr) {
        JSONObject jsonObject = JSON.parseObject(jsonStr);
        Student stu = JSON.parseObject(jsonObject.toJSONString(), new TypeReference<Student>(){});
        System.out.println(stu);
    }

    public static void initData(Student stu) {
        stu.setId("007");
        stu.setName("小西");
        stu.setAge(25);
        stu.setBirthday(new Date());
        stu.setSex(0);
        stu.setWeight(62.5f);
        //list集合,set集合一样
        ArrayList<Teacher> list = new ArrayList<>();
        list.add(new Teacher("1","小明",22));
        list.add(new Teacher("2","小红",22));
        list.add(new Teacher("3","小志",22));
        stu.setTeacherList(list);
        //在javaBean中添加javaBean
        Teacher teacher = new Teacher("1","佳佳",22);
        stu.setTeacher(teacher);
        //添加map集合
        Map<String, String> map = new HashMap<>();
        map.put("1", "小罗");
        map.put("2", "小嘉");
        map.put("3", "小敏");
        stu.setData(map);
        //添加map泛型的list
        List<Map<String, String>> dataList = new ArrayList<>();
        Map<String, String> map2 = new HashMap<>();
        map2.put("1", "小周");
        map2.put("2", "小蕾");
        dataList.add(map);
        dataList.add(map2);
        stu.setDataList(dataList);
    }

}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值