Gson не сериализует предопределенное поле - PullRequest
0 голосов
/ 27 августа 2018

Поле __ type не сериализовано в запросе JSON. Пока все было хорошо с версией Java. Это то же самое, даже если я поместил его в конструктор со значением по умолчанию или в блоке init. Мне нужно, чтобы это поле всегда было строкой «Файл», но оно, очевидно, является нулевым.

@Parcelize
data class File(var url: String?,
                var name: String?) : Parcelable {
    private var __type = "File"
}

То же самое со следующим кодом

@Parcelize
data class File(
        @SerializedName("url") var url: String?,
        @SerializedName("name") var name: String?,
        @SerializedName("__type") var type: String = "File") : Parcelable

JSON

{  
    "name":"sample_name.jpg",
    "url":"https://images.com/1123.jpg"
}

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы можете найти в документации, что при использовании аннотации @Parcelize сериализуются только основные параметры конструктора:

Instructs the Kotlin compiler to generate `writeToParcel()`, `describeContents()`
[android.os.Parcelable] methods, as well as a `CREATOR` factory class automatically.

The annotation is applicable only to classes that implements
[android.os.Parcelable] (directly or indirectly).
Note that only the primary constructor properties will be serialized.
0 голосов
/ 27 августа 2018

Попробуйте это,

class File{
    @SerializedName("name")
    public var name: String? = null
    @SerializedName("url")
    public var url: String? = null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...