zoukankan      html  css  js  c++  java
  • 序列化+fastjson和java各种数据对象相互转化

    序列化的定义

    • 序列化就是一种用来处理对象流的机制
      所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
    • 序列化是将对象转换为容易传输的格式的过程
      例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

    序列化的目的

    对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口。

    • 序列化是为了解决在对对象流进行读写操作时所引发的问题
    • 序列化是对象永久化的一种机制
      确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。

    序列化的实现

    将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

    Alibaba fastjson对java对象的序列化/反序列化操作

    import java.util.Map;
    
    import com.meidusa.fastjson.JSON;
    import com.meidusa.fastjson.JSONObject;
    import com.saic.grape.entity.KeyValue;
    import com.saic.grape.entity.UserLogin;
    /**
     * Copyright (C), 2014-4-22,
     * @version 1.0
     * @date 2014-4-22 javaBean转化为字符串公共类
     * @author SHENBO
     */
    public class FastJsonUtil
    {
    
        /**
         * 将javabean转化为序列化的json字符串
         * @param keyvalue
         * @return
         */
        public static Object beanToJson(KeyValue keyvalue) {
            String textJson = com.meidusa.fastjson.JSON.toJSONString(keyvalue);
            Object objectJson  = JSON.parse(textJson);
            return objectJson;
        }
    
        /**
         * 将string转化为序列化的json字符串
         * @param keyvalue
         * @return
         */
        public static Object textToJson(String text) {
            Object objectJson  = JSON.parse(text);
            return objectJson;
        }
    
        /**
         * json字符串转化为map
         * @param s
         * @return
         */
        public static Map stringToCollect(String s) {
            Map m = (Map) JSONObject.parseObject(s);
            return m;
        }
    
        /**
         * 将map转化为string
         * @param m
         * @return
         */
        public static String collectToString(Map m) {
            String s = JSONObject.toJSONString(m);
            return s;
        }
    
        /**
         * json字符串转化为javabean
         * @param s
         * @return
         */
        public static UserLogin jsonToJavaBean(String s) {
            UserLogin  userLogin =  JSONObject.parseObject(s, UserLogin.class);
            return userLogin;
        }
    
    
        public static void main(String[] args) {
    
            String str = "{"appCode":"Grape","appVersion":"1.0","deviceId":"236fa43ed352cc235","sourceId":"1c1c1c","userAccount":"13812345678","userToken":"123456789"}";
            Map ma = FastJsonUtil.stringToCollect(str);
            String ss = "{"velModelId":10000,"velModelName":"奥迪"}";
            //LoginResultVelModel vd = FastJsonUtil.jsonToJavaBean(ss);
            //System.out.println(vd.getVelModelName());
    
        }
    }

    参考资料

    JAVA中,序列化是指的什么?有何用途?
    fastjson 第三方jar和java各种数据对象相互转化

  • 相关阅读:
    Qt Release 构建时强制包含调试信息
    Spring Kafka(二)操作Topic以及Kafka Tool 2的使用
    PostgreSQL全文检索简介
    qcow2虚拟磁盘映像转化为vmdk
    Nodejs-JWT token认证:为什么要使用token、token组成(头部、载荷、签名)、jwt使用过程以及token对比session的好处(单点登录、减轻服务器压力、存储信息等)
    [Kotlin] Multi ways to write constuctor in Kotlin
    [CSS] Use CSS Transforms to Create Configurable 3D Cuboids
    [CSS] Use CSS Variables Almost like Boolean Values with Calc (maintainable css)
    [Kotlin] Typecheck with 'is' keyword, 'as' keyword for assert type
    [Kotlin] When to add () and when not to
  • 原文地址:https://www.cnblogs.com/myitroad/p/7826625.html
Copyright © 2011-2022 走看看