Использование JSON.stringify для объекта без сериализатора должно быть помечено как экспериментальное - PullRequest
0 голосов
/ 06 декабря 2018

Используя плагин kotlin 1.3.10 в Android Studio, когда я пытаюсь преобразовать объект простого класса в JSON, он не будет компилироваться:

Это объявление экспериментальное, и его использование должно быть помечено как @kotlinx..serialization.ImplicitReflectionSerializer 'или' @UseExperimental (kotlinx.serialization.ImplicitReflectionSerializer :: class) '

@Serializable data class Data(val a: Int, val b: Int)
val data = Data(1, 2)
val x = JSON.stringify(data)

Однако предоставление сериализатора работает:

val x = JSON.stringify(Data.serializer(), data)

Я не вижукто-нибудь еще имеет эту проблему, есть идеи, в чем проблема?Я настроил использование сериализации в gradle.build.

Я импортирую с:

import kotlinx.serialization.*
import kotlinx.serialization.json.JSON

1 Ответ

0 голосов
/ 06 декабря 2018

Перегрузка StringFormat.stringify, которая не принимает сериализатор (SerializationStrategy), все еще является экспериментальной.Если вы посмотрите его определение (например, Ctrl + клик по нему в IDE), вы увидите, что оно выглядит следующим образом:

@ImplicitReflectionSerializer
inline fun <reified T : Any> StringFormat.stringify(obj: T): String = stringify(context.getOrDefault(T::class), obj)

Где аннотация ImplicitReflectionSerializer сама объявлена ​​в этом же файле (SerialImplicits.kt):

@Experimental
annotation class ImplicitReflectionSerializer

Так как это все еще экспериментально, вам нужно сделать именно то, что говорит предупреждение, то есть сказать компилятору разрешить использование экспериментальных функций, добавив аннотацию, такую ​​как @UseExperimental..., гдевы используете его.

Обратите внимание, что быстрый пример , показанный в главном файле readme kotlinx.serialization GitHub, показывает, что при вызове stringify. * 1018 вам необходимо передать сериализатор.*

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