//序列化

public class AuthTypeEnumListJsonSerializer extends JsonSerializer<List> {

@Override

public void serialize(List list, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {

int[] integers = new int[list.size()];

for (int i = 0; i < list.size(); i++) {

integers[i] = list.get(i).getCode();

}

jsonGenerator.writeArray(integers, 0, integers.length);

}

}

//反序列化

public class AuthTypeListEnumJsonDeserializer extends JsonDeserializer<List> {

@Override

public List deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException, IllegalArgumentException {

ArrayNode treeNode = jsonParser.readValueAsTree();

Field field;

try {

field = jsonParser.getCurrentValue().getClass().getDeclaredField(jsonParser.currentName());

} catch (NoSuchFieldException e) {

return null;

}

field.setAccessible(true);

if (!field.getType().equals(List.class)) {

return null;

}

    List<AuthTypeEnum> result = new ArrayList<>();
Iterator<JsonNode> elements = treeNode.elements();
while (elements.hasNext()) {
Integer appCase = elements.next().asInt();
AuthTypeEnum anEnum = AuthTypeEnum.codeFrom(appCase);
result.add(anEnum);
}
if (result.isEmpty()) {
return null;
} else {
return result;
} }

}

`

枚举类list序列化与反序列化的更多相关文章

  1. 初识序列化和反序列化,使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化

    序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程.对象一旦被序列化,就可以把对象状态保存到硬盘的某个位置,甚至还可以通过网络发送给另外一台机器上运行的进程.本篇主要包括: ● 使用 ...

  2. 自定义fastjson对枚举类型的序列化及反序列化过程

    通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...

  3. .Net类的序列化和反序列化 - 进阶者系列 - 学习者系列文章

    今天看了下以前的一个工具的代码,其中涉及到.NET类的序列化和反序列化问题,所以就写一下. 这里说一下.NET类序列化的好处..NET类在序列化之前只是一个相对狭义的类.通过序列化,能够更好的保存该类 ...

  4. 【json】与【枚举】的序列化和反序列化

    参考:Jackson – Deserialization from json to Java enums 问题描述 java中使用枚举时,如果涉及到restful调用,不可避免会涉及到枚举的序列化和反 ...

  5. java基础知识回顾之javaIO类--java序列化和反序列化

    /** *  * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...

  6. C#中使用JavaScriptSerializer类实现序列化与反序列化

    1.添加引用 JavaScriptSerializer类的使用需要引用System.Web.Extensions.dll文件,根据路径:C:\Program Files (x86)\Reference ...

  7. C# 类的序列化和反序列化

    序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创 ...

  8. JsonHelper类(序列化和反序列化辅助类)

       1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; ...

  9. 用C#实现XML和实体类之间序列化和反序列化相互转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  10. java-IO处理类的序列化与反序列化

    package TestIo; import java.io.*; /** * 序列化 * * * 对象序列化 * * 一 创建对象 需要说明,想序列化的对象一定要是实现Serivalizable接口 ...

随机推荐

  1. MySql索引底层原理(01)

    目的:通过mysql获取数据,检索数据的原理来理解索引,以及如何利用好索引. 由于篇幅问题,可能会连载几篇文章. 从mysql获取一条数据说起: 我们知道,电脑的系统在获取数据的时候会旋转磁盘,然后移 ...

  2. absible笔记第一章 (ansibles基础与playbook常用模块)

    一. ansibles基础与playbook 1.优先级问题 ANSIBLE_CONFIG                        ansible.cfg 项目目录                ...

  3. Linux - TOP命令解析

    第一行: 当前系统时间1 系统已经运行时间(在这期间没有重启过)2 users 当前有2个用户登录系统  load average:后面的三个数分别是1分钟.5分钟.15分钟的负载情况.如果这个数除以 ...

  4. J V M(三)沙箱安全机制

    沙箱安全机制 Java安全模型的核心就是Java沙箱(sandbox)什么是沙箱? 沙箱是一个限制程序运行的环境.沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本 ...

  5. CentOS7 minimal 安装 VMware Tools(自带脚本安装)

    1.安装相关组件 yum -y install perl gcc make kernel-headers kernel-devel net-tools 2.新建挂载目录 mkdir -p /mnt/c ...

  6. Worksheet使用方法

    1  下载印象笔记: iPhone/iPad在App Store搜索"印象笔记"后下载 安卓在应用市场或在印象笔记官网yinxiang.com下载,图标同上 电脑可至印象笔记官网y ...

  7. ORACLE之自治事务

    在创建存储过程时,可以用关键字: PRAGMA AUTONOMOUS_TRANSACTION 创建自治事务. 常用场景: 触发器抛错导致事务回滚,日志的记录需要用自治事务进行记录 代码抛错,导致数据库 ...

  8. liunx部署flask项目

    如何在linux上部署flask项目 Python3.7 + virtualenv + uwsgi + git + mysql-5.6.45 + nginx 源码编译安装所需要的环境 yum inst ...

  9. pdf在线预览 ng2-pdf-viewer的运用

    angular项目在线预览PDF 1 安装 ng2-pdf-viewer yarn add ng2-pdf-viewer 2 在项目中添加 import { NgModule } from '@ang ...

  10. Qt中的线程编程

    在基于操作系统的程序设计中,在处理多任务时,可以有多种方法,但效率较高的当属线程方式,下面就来讨论一下在Qt中如何实现线程编程. 先来说一下什么是线程.线程(thread)是操作系统能够进行运算调度的 ...