首页 > 其他分享 >枚举类list序列化与反序列化

枚举类list序列化与反序列化

时间:2023-01-30 09:33:05浏览次数:41  
标签:jackson java list 枚举 import 序列化 com fasterxml

`package com.byd.plm.authority.auth.dto.jsonSerializer;

import com.byd.plm.authority.auth.dto.enums.AuthTypeEnum;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.util.List;

/**

  • @description:
  • @Author: fu.yao2
  • @Date: 2022/12/6 09:26
  • @throws:
    **/
    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);
    }
    }

package com.byd.plm.authority.auth.dto.jsonDeserializer;

import com.byd.plm.authority.auth.dto.enums.AuthTypeEnum;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**

  • @description:

  • @Author: fu.yao2

  • @Date: 2022/11/11 15:20

  • @throws:
    **/
    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;
     }
    

    }
    }

`

标签:jackson,java,list,枚举,import,序列化,com,fasterxml
From: https://www.cnblogs.com/orangeJuiceRain/p/17074398.html

相关文章

  • Mysql数据库插入数据时出现Unknown column ‘admin‘ in ‘field list‘错误
    报错内容  报错原因字段和插入的值所用的引号不对 解决方案 insertintot_user(`username`,`password`,`email`)VALUES(`admin`,`admin`,`[email protected]......
  • XmlSerializer 反序列化学习
    XmlSerializer反序列化漏洞https://www.cnblogs.com/nice0e3/p/16942833.html#%E5%88%A9%E7%94%A8%E9%93%BE%E8%B0%83%E8%AF%95https://www.anquanke.com/post/id/17231......
  • galgame list
    1.9-nine-系列目前最喜欢的作品,可能有一小部分原因是因为玩的比较久所以感情更深,但是不得不承认和泉老师的画和这个系列的剧本都是很顶尖的存在该作有点战斗题材的感觉......
  • 蓝桥杯备战日志(Python)2-相乘(逆向枚举)
    原题小蓝发现,他将  至  之间的不同的数与  相乘后再求除以  的余数,会得到不同的数。小蓝想知道,能不能在  至  之间找到一个数,与  相乘后再除以  后的余数......
  • flutter Listview physics常见子类
    ListView的physics是ScrollPhysics类:其常见子类有BouncingScrollPhysics :允许滚动超出边界,但之后内容会反弹回来。ClampingScrollPhysics :防止滚动超出边界,夹住 。......
  • List<Object>集合获取指定属性最大值的对象
    List<Vo>list=dao.selectList();if(CollectionUtils.isNotEmpty(list)){Optional<Vo>max=list.stream().filter(obj->ObjectUtils.isNotEmpty(obj)&&ObjectUt......
  • 线程安全集合CopyOnWriteArrayList
    解决多线程的集合有以下几种1、Vertor(所有方法上加synchronized锁)能保证多线程安全,数据一致,但性能低下一般不用2、Collections.synchronizedList方法返回的List 在方......
  • Json.NET 序列化解析
    Json.NET是一款.NET平台的JSON框架,它还有一个我们熟知的名字:Newtonsoft.Json。1.介绍Json.NET有如下功能及特点:灵活的JSON序列化器,用于.NET对象和JSON之间......
  • PHP反序列化新手入门学习总结
    最近写了点反序列化的题,才疏学浅,希望对CTF新手有所帮助,有啥错误还请大师傅们批评指正。php反序列化简单理解首先我们需要理解什么是序列化,什么是反序列化?PHP序列化:seria......
  • DropDownList参数
     示例@Html.DropDownList("ComeFrom",newList<SelectListItem>(){newSelectListItem(){Value="所有",T......