zoukankan      html  css  js  c++  java
  • Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON

    1. 依赖库

     

    jackson-all-1.6.1.jar

     

    2. 代码


    public class Student {
        private String name;
        private int age;
        
        public Student(){
            
        }
        public Student(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }

    public class Grade {
        
        public String name = "wang";
        public int f1 = 100;

    }

    public enum Color {
        RED, GREEN, BLUE
    }


    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.type.TypeReference;

    public class JsonTest {

        public static void main(String[] args)throws Exception {
            ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
            mapper.registerSubtypes(Student.class);

            //对象
            String serialValue = mapper.writeValueAsString(new Student("wang", 20));
            System.out.println(serialValue);
            Student student = mapper.readValue(serialValue, Student.class);
            System.out.println(student.getName());
            
            //数组
            String[] arr1 = {"111", "222"};
            serialValue = mapper.writeValueAsString(arr1);
            System.out.println(serialValue);
            String[] arr2 = mapper.readValue(serialValue, String[].class);
            System.out.println(arr2[0]);
            
            //集合
            List<Student> list1 = new ArrayList<Student>();
            list1.add(new Student("wang", 20));
            list1.add(new Student("zhang", 21));
            serialValue = mapper.writeValueAsString(list1);
            System.out.println(serialValue);
            List<Student> list2 = mapper.readValue(serialValue, new TypeReference<List<Student>>(){});
            System.out.println(list2.get(0).getName());
            
            //MAP
            Map<Integer, String> map1 = new HashMap<Integer, String>();
            map1.put(1, "11");
            map1.put(2, "22");
            serialValue = mapper.writeValueAsString(map1);
            System.out.println(serialValue);
            Map<Integer, String> map2 = mapper.readValue(serialValue, new TypeReference<Map<Integer, String>>(){});
            System.out.println(map2.get(1));
            
            //枚举
            Color color = Color.RED;
            serialValue = mapper.writeValueAsString(color);
            System.out.println(serialValue);
            Color color2 = mapper.readValue(serialValue, Color.class);
            System.out.println(color2);
            
            //注入测试 
            serialValue = mapper.writeValueAsString(new Student("",{wang}[]:,"", 20));
            System.out.println(serialValue);
            Student student3 = mapper.readValue(serialValue, Student.class);
            System.out.println(student3.getName());
            
            serialValue = mapper.writeValueAsString(new Grade());
            System.out.println(serialValue);
            Grade g = mapper.readValue(serialValue, Grade.class);
            System.out.println(g.name);
        }

    }

  • 相关阅读:
    自己写的SqlHelper
    宿叶网思路
    phpMyAdmin教程 之 创建新用户/导入/导出数据库
    什么是主机空间?干什么用?
    转 sql注入
    xUtils
    仿360状态,类流量监控桌面浮动显示
    在Yii Framework中利用PHPMailer发送邮件(2011-06-02 14:06:23)
    MD5类库(hex_md5)
    MYSQL的随机查询的实现方法
  • 原文地址:https://www.cnblogs.com/fx2008/p/3139679.html
Copyright © 2011-2022 走看看