博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java序列化与反序列化
阅读量:5086 次
发布时间:2019-06-13

本文共 3415 字,大约阅读时间需要 11 分钟。

一、概念:

  1、Java序列化:把Java对象转换为字节序列的过程

  2、Java反序列化:将字节序列恢复为Java对象的过程

二、用途:

  1、想要将Java对象从内存中保存到一个文件中或者数据库中时候

  2、想要将Java对象在网络上传递的时候

  3、通过序列化在进程间传递对象

Serializable序列化接口属于java.io下的类,所以序列化存储或者序列化传递的是一个字节流。 三、实现:   
package com.sigma.sigmacore.utils;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.DeserializationFeature;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.type.TypeFactory;import java.io.IOException;import java.io.StringWriter;import java.io.Writer;import static com.google.common.base.Preconditions.checkNotNull;public class JsonUtils {    private static ObjectMapper objectMapper = new ObjectMapper();    //父类的静态变量->父类的静态初始化块->子类的静态变量->子类的静态初始化块    static {        //默認忽略位置屬性        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);    }    public static ObjectMapper getMapper() {        return objectMapper;    }    /**     * 將對象序列化為JSON     *     * @param object 對象     * @return json字符串     * @throws IOException IO異常(包含JSON異常)     */    public static String serialize(Object object) throws IOException {        return serialize(object, false);    }    /**     * 將對象序列化為JSON     *     * @param object     對象     * @param withPretty 是否格式化     * @return json字符串     * @throws IOException IO異常(包含JSON異常)     */    public static String serialize(Object object, boolean withPretty) throws IOException {        Writer write = new StringWriter();        if (withPretty) {            objectMapper.writerWithDefaultPrettyPrinter().writeValue(write, object);        } else {            objectMapper.writeValue(write, object);        }        return write.toString();    }    /**     * 將對象序列化為JSON     *     * @param objectMapper 自配置對象     * @param object       對象     * @param withPretty   是否格式化     * @return Json字符串     * @throws IOException IO異常     */    public static String serialize(ObjectMapper objectMapper, Object object, boolean withPretty) throws IOException {        Writer write = new StringWriter();        if (withPretty) {            objectMapper.writerWithDefaultPrettyPrinter().writeValue(write, object);        } else {            objectMapper.writeValue(write, object);        }        return write.toString();    }    /**     * 反序列化為T     *     * @param json      json字符串     * @param classType 類別     * @param 
泛型 * @return 對象 * @throws IOException IO異常(包括JSON異常) */ public static
T deserialize(String json, Class
classType) throws IOException { checkNotNull(json); return (T) objectMapper.readValue(json, TypeFactory.rawClass(classType)); } /** * 反序列化為T * * @param json json字符串 * @param typeRef 類別 * @param
泛型 * @return 對象 * @throws IOException IO異常(包括JSON異常) */ public static
T deserialize(String json, TypeReference
typeRef) throws IOException { return objectMapper.readValue(json, typeRef); } /** * 反序列化為T * * @param objectMapper 自配置Mapper * @param json json字符串 * @param typeRef 類型 * @param
泛型 * @return 對象 * @throws IOException IO異常(包括JSON異常) */ public static
T deserialize(ObjectMapper objectMapper, String json, TypeReference
typeRef) throws IOException { return objectMapper.readValue(json, typeRef); }}

 

 

转载于:https://www.cnblogs.com/javallh/p/10237525.html

你可能感兴趣的文章
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>