169 похожих чатов

Всем привет. Использую Retrofit и Gson. При запросе на сервер, поля, которые

равны 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

Но поле всё равно игнорируется

16 ответов

40 просмотров

Что значит игнорируется? Оно не может пропасть с поджо просто так

Роман-Жуков Автор вопроса

Когда отправляю запрос на сервер, если поле 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":["Количество обязательное поле"]}

А покажи где ты шлёшь эту модель

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта