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. BZOJ 3261: 最大异或和( 可持久化trie )

    搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...

  2. [C#参考]事件机制

    还是那个项目,为了降低程序的耦合性,我决定小小的重构一下自己原来的代码,把Socket通信和帧的分析这两部分分别封装成一个类,当然线程没有变,只是封装了一下,为的就是模块测试完容易拼接.这也是我打算降 ...

  3. 让.net程序自动运行在管理员权限下

    原文:让.net程序自动运行在管理员权限下 如何让.net程序自动运行在管理员权限下 VS2010 c# 编译的WINFORM程序 在Win7 以管理员身份运行 windows 7和vista提高的系 ...

  4. 一个用C++写的Json解析与处理库

    什么是Json?这个库能做什么? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is e ...

  5. delphi关于文件操作集锦

        关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...

  6. HDU ACM 1063 Exponentiation 大实数乘方

    分析:大实数乘方计算. #include<iostream> #include<string> using namespace std; struct BigReal //高精 ...

  7. HDU5280 Senior&#39;s Array(简单DP)

    题目链接:pid=5280">传送门 题意: 给定一个长度为n的序列,和一个改动的值p,必须从原序列中选一个位置改动成p, 求改动后的区间和的最大值. 分析: 枚举位置+最大区间和. ...

  8. docker基础入门之二

    一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...

  9. Android:广播接收器(BroadCastReceiver)要点随笔。

    @@@描述         广播接收器可以收到 Context.sendBroadcast或者Context.sendOrderedBroadcast发出的意图(intent).   @@@Local ...

  10. VS2013 RC 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral.........

    微软发布了vs2013的RC版本,更新了自己机器上的vs,在创建项目过程中,发现出现如题的相关错误,查了相关msdn的资料,才了解到vs已经全面切换到使用NuGet这个第三方开源工具来管理项目包和引用 ...