如何解决没有空值的 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%;"> </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 举报,一经查实,本站将立刻删除。