zoukankan      html  css  js  c++  java
  • ObjectMapper将josn字符串转化为List

    一.利用ObjectMapper将json字符串转为List

    Student.java

    package objectmapper;
    
    import java.io.Serializable;
    
    public class Student{
        private Integer id;
        private String sName;
        private String sAddress;
        private Double sal;
        
        public Student() {
        }
        public Student(Integer id, String sName, String sAddress, Double sal) {
            super();
            this.id = id;
            this.sName = sName;
            this.sAddress = sAddress;
            this.sal = sal;
        }
        //get/set
        
    }

    ZcjUser.java

    package objectmapper;public class ZcjUser implements Serializable {
    
        private static final long serialVersionUID = 1L;
        private int id;
        private String message;
        private Date sendTime;
    
        // 这里手写字母大写,只是为了测试使用,是不符合java规范的
        private String NodeName;
        private List<Integer> intList;
        private List<Student> studentList;
    public ZcjUser(int id, String message, Date sendTime) {
            super();
            this.id = id;
            this.message = message;
            this.sendTime = sendTime;
      }
    //get/set }

    Test.java

    package objectmapper;public class Test {
        public static ObjectMapper mapper = new ObjectMapper();
    
        static {
            // 转换为格式化的json
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
    
            // 如果json中有新增的字段并且是实体类类中不存在的,不报错
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
        
        public static void main(String[] args) throws Exception {
            testObj();
        }
        public static void testObj() throws JsonGenerationException, JsonMappingException, IOException {
            ZcjUser user = new ZcjUser(1, "Hello World", new Date());
           
            List<Integer> intList = new ArrayList<>();
            intList.add(11);
            intList.add(22);
            intList.add(33);
            user.setIntList(intList);
            
            List<Student> sList = new ArrayList<>();
            Student s1 = new Student(1, "zs", "四川", 111.1);
            Student s2 = new Student(2, "ls", "成都", 222.2);
            Student s3 = new Student(3, "ww", "兴隆湖", 333.3);
            sList.add(s1);
            sList.add(s2);
            sList.add(s3);
            user.setStudentList(sList);
            
            
            List<ZcjUser> userList = new ArrayList<>();
            userList.add(user);
    
            mapper.writeValue(new File("D:/test3.txt"), userList); // 写到文件中
    
            List<ZcjUser> lendReco = mapper.readValue(new File("D:/test3.txt"),new TypeReference<List<ZcjUser>>() { });
            System.out.println(lendReco.get(0).getStudentList().get(0).getsName());
    
        }
    
    }

    test3.txt

    [ {
      "id" : 1,
      "message" : "Hello World",
      "sendTime" : 1557823326329,
      "intList" : [ 11, 22, 33 ],
      "studentList" : [ {
        "id" : 1,
        "sName" : "zs",
        "sAddress" : "四川",
        "sal" : 111.1
      }, {
        "id" : 2,
        "sName" : "ls",
        "sAddress" : "成都",
        "sal" : 222.2
      }, {
        "id" : 3,
        "sName" : "ww",
        "sAddress" : "兴隆湖",
        "sal" : 333.3
      } ],
      "nodeName" : null
    } ]

    二。利用JSONArray将json字符串转List

    Test.java

    public class Test {
        
        public static void main(String[] args) throws Exception {
            testObj();
        }
        public static void testObj() throws JsonGenerationException, JsonMappingException, IOException {
            String jsonStr = FileUtils.readFileToString(new File("D:/test3.txt"), "utf-8");
            
            Map<String,Class<Student>> map = new HashMap<String,Class<Student>>();
            // studentList 为ZcjUser的属性
            map.put("studentList", Student.class);
            JSONArray array = JSONArray.fromObject(jsonStr);
            List<ZcjUser> list2 = (List<ZcjUser>) JSONArray.toList(array, ZcjUser.class,map);
            
            System.out.println(list2.get(0).getStudentList().get(0).getsName());
        }
    
    }
  • 相关阅读:
    哥java学识有大进 干回之前的小学生系统像切菜一样简单 不说了 来代码
    祝贺自己操作系统JAVA项目有进展!!
    四则运算的开发
    四则运算app总结
    对其它组评价的反馈
    第三次spring冲刺2
    阅读《构建之法》第13-17章
    对其他组的评价
    第三次spring冲刺1
    阅读11,12章
  • 原文地址:https://www.cnblogs.com/zcjyzh/p/10863380.html
Copyright © 2011-2022 走看看