Gson не может сериализовать LocalDate, когда выход из REPL? - PullRequest
1 голос
/ 21 июня 2019

Я пишу приложение для Android Kotlin в Android Studio, которое взаимодействует с API-интерфейсом Firebase. Я решил использовать Fuel для HTTP-клиента и, в частности, fuel-gson для сериализации.

Сериализация основных типов, таких как Strings / Ints, прошла хорошо, но когда я добавил LocalDate в свой класс данных, поле в базе данных firestore закончилось как пустая карта {}.

Я проверил это в REPL и получил:

import com.google.gson.Gson
import java.time.LocalDate

Gson().toJson(LocalDate.now())
res0: kotlin.String! = {"year":2019,"month":6,"day":20}

Так что сериализация LocalDate, похоже, работала просто отлично, но потом, когда я попытался зарегистрировать ее в коде с помощью Log.d("GSON", Gson().toJson(LocalDate.now())), результат снова был:

2019-06-20 23:49:26.740 12653-12653/com.utn.nutricionista D/GSON: {}

Я подумал, что мог как-то испортить свои зависимости, поэтому я попробовал то же самое в чистом проекте сразу после его создания, и все же результат был тем же.

Этот новый проект имеет последнюю версию Android API (Q) и com.google.code.gson:gson:2.8.5 в качестве зависимости.

package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.google.gson.Gson
import java.time.LocalDateTime

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        Log.d("GSON", Gson().toJson(LocalDateTime.now()))
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Буду очень признателен за понимание того, что происходит и что нужно сделать, чтобы это исправить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...