json数据转换实例

    xiaoxiao2025-05-21  9

    public class JsonTest { public static void main(String[] args) { ClassA a = new ClassA(); a.setName("className01"); List<Student> stuList = new ArrayList<>(); for(int i=0; i<3; i++){ Student stu = new Student(); stu.setName("test"+i); stu.setAge(i); stuList.add(stu); }

    a.setStudentList(stuList);

    //bean 2 string JSONObject jObj = JSONObject.fromObject(a); String jsonStr = jObj.toString(); System.out.println(jsonStr); //string 2 jsonobject JSONObject jsonObj = JSONObject.fromObject(jsonStr); System.out.println("class name ="+jsonObj.getString("name")); JSONArray jsonArray = jsonObj.getJSONArray("studentList"); for(int i=0; i<jsonArray.size(); i++){ JSONObject student = (JSONObject)jsonArray.get(i); System.out.println("name ="+student.getString("name")); System.out.println("age ="+student.getString("age"));

    }

    //string 2 bean 方法1 Map<String,Class> classMap = new HashMap<>(); classMap.put("studentList", Student.class); ClassA b = (ClassA)JSONObject.toBean(jsonObj, ClassA.class, classMap); System.out.println("class name ="+b.getName()); List<Student> stuList02 = b.getStudentList(); for(int i=0; i<stuList02.size(); i++){ Student stu = stuList02.get(i); System.out.println(stu.getName()); System.out.println(stu.getAge()); }

    //string 2 bean 方法2 ObjectMapper objectMapper=new ObjectMapper(); ClassA c = null; try { c=objectMapper.readValue(jsonStr, ClassA.class); System.out.println("class name ="+c.getName()); List<Student> stuList03 = c.getStudentList(); for(int i=0; i<stuList03.size(); i++){ Student stu = stuList03.get(i); System.out.println(stu.getName()); System.out.println(stu.getAge()); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

    }

    package com.test.pojo; import java.util.List; public class ClassA { private String name; private List<Student> studentList; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Student> getStudentList() { return studentList; } public void setStudentList(List<Student> studentList) { this.studentList = studentList; } }

    package com.test.pojo; public class Student { private String name; private Integer age; 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; } }

    注:1) JSONObject.fromObject(javabean)中的javabean.class必须为public,否则会报:Property '***' has no getter method

    2) JSONObject.toBean可直接用于简单数据类型的Class,如果里面有复杂数据类型,需使用Map<String,Class>,

    其中key为复杂数据类型的属性名,Class为复杂数据类型的类名

    转载请注明原文地址: https://ju.6miu.com/read-1299106.html
    最新回复(0)