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);
    }

}

Java对象序列化与反序列化一 JSON的更多相关文章

  1. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  2. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  3. Java 对象序列化和反序列化

         之前的文章中我们介绍过有关字节流字符流的使用,当时我们对于将一个对象输出到流中的操作,使用DataOutputStream流将该对象中的每个属性值逐个输出到流中,读出时相反.在我们看来这种行 ...

  4. Java对象序列化与反序列化

    对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存 ...

  5. java对象序列化、反序列化

    平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态.一 ...

  6. java对象序列化和反序列化,redis存入和获取对象

    最近使用redis发现直接存储序列化后的对象更方便,现提供java序列化和反序列化的代码 1.序列化代码: public static byte[] serialize(Object object) ...

  7. Java 对象序列化和反序列化 (实现 Serializable 接口)

    序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.  把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放 ...

  8. JAVA对象序列化和反序列化学习

    JAVA序列化就是将JAVA对象转化为字节序列的过程,而JAVA反序列化就是将字节序列转化为JAVA对象的过程. 这一过程是通过JAVA虚拟机独立完成,所以一个对象序列化后可以在任意时间和任意机器上反 ...

  9. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

随机推荐

  1. Spring学习之优缺点

    Spring 1.Spring工作机制及为什么要用? Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.Spring既是一个AOP框架,也是一IOC容器. SpringFrame ...

  2. 整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用

    整理部分JS 控件  WEB前端常用的做成Jsp项目,方便今后直接用 最近又没时间了,等用时间了,再加入更多的, 源码下载: http://download.csdn.net/detail/liang ...

  3. ButterKnife使用小结

    项目官网:http://jakewharton.github.io/butterknife/ Github主页:https://github.com/JakeWharton/butterknife 这 ...

  4. java 数组插入元素

    import java.util.Arrays; public class AddArray { public static void main(String[] args) { int[] arr ...

  5. 四轴飞行器1.5 各种PID对比分析及选择

    原创文章,欢迎转载,转载请注明出处 这篇文章主要介绍我对PID的理解,以及选择PID算法的过程. 一 PID的理解和学习过程 二 飞控的PID效果 先上个飞控PID的响应的视频:介绍在后面 地址:ht ...

  6. QR Code簡介、介紹

    QR Code為目前最常被使用的一種二維條碼,1994年由日本Denso-Wav e公司發明,QR是英文Qu ickResponse的縮寫,即快速反應的意思,1999年時,公布了符合日本當地的標準-「 ...

  7. 黑马程序员_<<StringBuffer,包装类>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. StringBuffer 1.概述 S ...

  8. tocken和ticket的数据模型;

    /* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); m ...

  9. [PHP] PHP初学者想了解"伪静态",必须看这个贴 [复制链接] [推荐]

    一.何为“伪静态”? 以传智播客bbs论坛为例,这篇帖子的链接地址原本应该是“http://bbs.itcast.cn/forum.php?mod=post&action=newthread& ...

  10. 使用COCOS2D-X JSB开发,在js页面中设置iOS键盘模式

    XYSDK.h void setKeyboardType(int type); XYSDK.cpp voidXYSDK::setKeyboardType(int type) { #if (CC_TAR ...