微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有空值的 Gson 转换器

如何解决没有空值的 Gson 转换器

我有两个 apis ,一个向我发送一个 Appointment 对象,它的主体是这样的

<script>
      let calendar = null;
      $(document).ready(function() {
        let calendarEl = $('#calendar')[0];
        calendar = new FullCalendar.Calendar(calendarEl,{
          headerToolbar: {
            left: 'prev,next today',center: 'title',right: 'dayGridMonth,dayGridWeek,customDayView'
          },eventOrder: 'start',initialView: 'dayGridMonth',events: {
            url: '{{ path('apps_scheduler_pro_events') }}',method: 'POST',failure: function() {
              alert('There was an error while fetching events');
            },},customButtons: {
            customDayView: {
              text: 'day',click: function() {
                window.location = "{{ path('apps_scheduler_pro_day') }}";
              }
            }
          },datesSet: function(dateInfo) {
            console.log('dateSet');
            calendar.removeAllEvents();
            calendar.refetchEvents();
          },eventClick: function(event) {
            // https://stackoverflow.com/questions/58485165/fullcalendar-how-to-have-event-opening-in-new-tab-window-calendar-view
            if (event.event.url) {
              event.jsEvent.preventDefault();
              window.open(event.event.url,"_blank");
            }
          },eventDidMount: function (info) {
            let html = `
<div class="fc-event-main">
                <div class="fc-event-main-frame">
                    <div class="fc-event-title-container">
                        <div class="fc-event-title fc-sticky" style="padding-left: 12px;">
` + info.event.title + `
<div style="position: absolute; left: 0; top: 0; width: 10px; height: 100%;">&nbsp;</div>
                        </div>
                    </div>
                </div>
            </div>
            `;
            $(info.el).html(html);
          },});
        calendar.render();
      });

      function RefreshCalendar() {
        calendar.refetchEvents();
      }
    </script>

一个应该从我这里收到这个身体

data class Appointment(
    id:Long = 4,name:String = "name"
   ...
)

没有id字段 在 kotlin 代码中,我想将 Id 设置为 null 并且 Gson 应该忽略它,因为它是 null 怎么做 ? 如何在没有空值的情况下将 kotlin 类转换为 json

解决方法

Gson 默认跳过空值。假设您有一个 id 可为空的 Appointment 类:

data class Appointment(
    val id: Long?,val name: String,)

如果id为null,则不会出现在json中:

val gson = Gson()
gson.toJson(Appointment(null,"hello")) // => {"name":"hello"}

如果要序列化空值,请在 gson builder 中使用 serializeNulls() 方法:

val gson = GsonBuilder().serializeNulls().create()
gson.toJson(Appointment(null,"hello")) // => {"id":null,"name":"hello"}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?