равны null просто игнорируются. Как сделать так, чтобы не игнорировались?
Пробовал так:
val mRetrofit: Retrofit = Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(
GsonConverterFactory.create(
GsonBuilder()
.serializeNulls()
.create()
)
)
.client(getClient())
.build()
И в поле класса данных ставил аннотации
@SerializedName("count")
@Expose(serialize = true, deserialize = true)
val count: BigDecimal? = null
Но поле всё равно игнорируется
Что значит игнорируется? Оно не может пропасть с поджо просто так
Когда отправляю запрос на сервер, если поле count = null, то его просто нет
Где нет? В модели?
serializeNulls ?
Да, вот я как раз поставил serializeNulls, но у меня это не работает
А зачем аннотация Expose? Гсон с нуллами умеет же работать
Expose это я пробовал прописать, что сеарилизация нужна. Просто пробовал. Но это тоже не влияет
Убери анотацию и serialiseNulls
Сейчас сделал так: private val mRetrofit: Retrofit = Retrofit.Builder() .baseUrl(URL) .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .client(getClient()) .build() А поле количества так: @SerializedName("count") val count: BigDecimal? = null В итоге, где поле не null, там json такой: {"address_code_1c":16,"shift_id":1742,"city_code_1c":15,"count":3,"date":"2021-06-21 20:26:14","kfe":0,"knd":0,"new":0,"sku":1,"top":0,"name":"Кокрок с грушей 90гр","nomenclature_code_1c":462,"price_base":10.2,"price_retail":32,"type":0,"unit":"шт","user_id":179} Где поле null, там json такой: {"address_code_1c":16,"shift_id":1742,"city_code_1c":15,"date":"2021-06-21 20:26:14","kfe":0,"knd":0,"new":0,"sku":0,"top":0,"name":"Вода Синеборье газ 0,6л","nomenclature_code_1c":67,"price_base":9.93,"price_retail":30,"type":0,"unit":"шт","user_id":179} То есть count игнорируется при сериализации
Покажи же ответ в виде модели
Это жсон сервера, тут сервер не шлёт count и всё, от тебя не зависит это. А count в pojo должен быть null
Нет. Это я отправляю на сервер.
data class StorageModelInventoriesItem( @SerializedName("name") val name: String, @SerializedName("count") val count: BigDecimal? = null, @SerializedName("unit") val unit: String, @SerializedName("price_base") val priceBase: BigDecimal, @SerializedName("price_retail") val priceRetail: BigDecimal, @SerializedName("city_code_1c") val cityCode1c: Int, @SerializedName("address_code_1c") val addressCode1c: Int, @SerializedName("user_id") val userId: Int, @SerializedName("date") val date: String, @SerializedName("nomenclature_code_1c") val nomenclatureCode1c: Int, @SerializedName("type") val type: Byte, @SerializedName("new") val isNew: Byte, @SerializedName("top") val isTop: Byte, @SerializedName("knd") val isKnd: Byte, @SerializedName("kfe") val isKfe: Byte, @SerializedName("sku") val isSku: Byte, @SerializedName("shift_id") val shiftId: Int )
Так серверу всё равно, там если нет поля, то нулл по дефолту
В том-то и дело, что нет. Ответ сервера такой: {"count":["Количество обязательное поле"]}
А покажи где ты шлёшь эту модель
Обсуждают сегодня