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());
        }
    
    }
  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/zcjyzh/p/10863380.html
Copyright © 2011-2022 走看看