首页 > 其他分享 >gson builder

gson builder

时间:2023-07-05 16:14:36浏览次数:33  
标签:registerTypeAdapter return string DEFAULT builder JsonPrimitive new gson

public static final Gson gson = new GsonBuilder()
            .serializeNulls()
            .registerTypeAdapter(LocalDateTime.class, (JsonSerializer<LocalDateTime>) (localDateTime, typeOfSrc, context) -> {
                if (Objects.isNull(localDateTime)) {
                    return new JsonPrimitive("");
                }
                return new JsonPrimitive(localDateTime.format(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMATTER)));
            })
            .registerTypeAdapter(LocalDateTime.class, (JsonDeserializer<LocalDateTime>) (json1, typeOfT, context) -> {
                String string = json1.getAsJsonPrimitive().getAsString();
                if (Strings.isNullOrEmpty(string)) {
                    return null;
                }
                try {
                    return LocalDateTime.parse(string, DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMATTER));
                }catch (RuntimeException exception){
                    return LocalDateTime.parse(string, DateTimeFormatter.ISO_DATE_TIME);
                }
            })
            .registerTypeAdapter(LocalDate.class, (JsonSerializer<LocalDate>) (localDate, type, jsonSerializationContext) -> {
                if (Objects.isNull(localDate)) {
                    return new JsonPrimitive("");
                }
                return new JsonPrimitive(localDate.format(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMATTER)));
            })
            .registerTypeAdapter(LocalDate.class, (JsonDeserializer<LocalDate>) (json, typeOfT, context) -> {
                String string = json.getAsJsonPrimitive().getAsString();
                if (Strings.isNullOrEmpty(string)) {
                    return null;
                }
                return LocalDate.parse(string, DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMATTER));
            })
            .registerTypeAdapter(LocalTime.class, (JsonSerializer<LocalTime>) (localTime, type, jsonSerializationContext) -> {
                if (Objects.isNull(localTime)) {
                    return new JsonPrimitive("");
                }
                return new JsonPrimitive(localTime.format(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMATTER)));
            })
            .registerTypeAdapter(LocalTime.class, (JsonDeserializer<LocalTime>) (json, typeOfT, context) -> {
                String string = json.getAsJsonPrimitive().getAsString();
                if (Strings.isNullOrEmpty(string)) {
                    return null;
                }
                return LocalTime.parse(string, DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMATTER));
            })
            .registerTypeAdapter(Date.class, (JsonSerializer<Date>) (date, type, jsonSerializationContext) -> {
                if (Objects.isNull(date)) {
                    return new JsonPrimitive("");
                }
                SimpleDateFormat fmt = new SimpleDateFormat(DEFAULT_DATE_TIME_FORMATTER);
                //SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
                //fmt.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
                return new JsonPrimitive(fmt.format(date));
            })
            .create();

 

标签:registerTypeAdapter,return,string,DEFAULT,builder,JsonPrimitive,new,gson
From: https://www.cnblogs.com/jonney-wang/p/17528799.html

相关文章

  • PowerBuilder从入坑到放弃(二)编码规范
    前言上一篇我们从0到1用pb开发了一个helloworld程序,并成功将开发的程序编译打包并且制作了安装包。程序员最讨厌的莫过于写文档和别人不写注释。不知道大家会不会和我一样,在找bug时,有段代码,心中不知默默的骂了它多少遍。哪个sx写的这代码,研究了一段时间发现,原来那sx竟是自己......
  • 代码生成器 CodeBuilder 3 正式版发布
    CodeBuilder是一款强大的代码生成工具,目前发布了3.0,大家可以前去下载体验官方主页。1、多种数据源基于ADO.NET的数据驱动基于Fireasy3,支持从SqlServer、MySql、Oracle、Firebird、PostgreSql、SQLite、达梦、人大金仓、神通数据库,以及Odbc、OleDb驱动。可以获取所有......
  • Java 基础复习——StringBuffer 和 StringBuilder
    StringBuffer和StringBuilderStringBuffer类简介java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删很多方法和String相同,但StringBuffer是可变长度的StringBuffer是一个容器注意:StringBuffer的直接父类是AbstractStringBuilder有属......
  • HBuilder 快捷键的教程
    /*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/创建HTML结构:h8(敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲htEnter)中途换行:'Ctrl+Enter'设置charset:me6Enter引用外部js:s2Enter'Ctrl+Enter'创建js区块:sEnter创建函数:fun3(或者funnEnter)为函数......
  • 07.生成器模式(Builder)
    使用生成器模式来解决问题定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的结构和说明Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作。ConcreteBuilder:具体的生成器实现,实现各个部件的创建,并负责组装Produ......
  • org.springframework.boot.builder.SpringApplicationBuilder.init([LjavalangObject;
    一SpringBoot2.0.4集成SpringCloud异常:org.springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V二、异常处理参考:缘起初学springcloud的朋友可能不知道,其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误,比如eureka注册了......
  • diskimage-builder制作ironic ARM镜像
    虚环境安装克隆源码的仓库:$gitclonehttps://git.openstack.org/openstack/diskimage-builder$gitclonehttps://git.openstack.org/openstack/dib-utils建立虚环境:$virtualenvdib-env启用虚环境$sourcedib-env/bin/activate停止环境$sourcedib-env/bin/deac......
  • Java中的String、StringBuilder和StringBuffer
    StringString为什么不可变?有什么好处?在Java中的String源码中,我们可以看到字符串String类就是char数组的封装,且字符char[]前面的修饰关键字是private和final。final决定了char数组是私有成员变量,不可以指向新的数组。private决定了该数组只能有String类内部访问,所以不可变。好......
  • hbuilder快捷键设置
    hbuilder快捷键设置: [//向下复制一行{"key":"ctrl+d","command":"editor.action.duplicate","override":true},//向下插入一行{"key":"shift+enter","command":"editor.action.insertLineAfte......
  • Day08-异常机制、包装类、String-StringBuffer-StringBuilder比较
    异常机制异常处理5个关键字:try、catch、finally、throw、throws注意点假设要捕获多个异常,异常类型从小到大try监控区域,catch(想要捕获的异常类型!)捕获异常finally处理善后工作,可以不要finallythrow主动抛出异常throws在方法上捕获异常 包装类包装类(I......