Retrofit2 и Moshi: отправка JSON без вложенных объектов - PullRequest
0 голосов
/ 11 ноября 2019

В моем коде у меня есть класс данных, который хранит некоторую информацию для передачи в веб-сервис в виде тела json

data class MyDataClass(
    var booleanField : Boolean = true,
    var stringField : String = "",
    var aDataField : ADataClass = ADataClass()
)

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

data class ADataClass(
    var aDataString : String = "",
    var aDataAnotherString : String = ""
)

Теперь, когда я звоню в свой веб-сервис, я передаю json вроде

{
     "booleanField" : true,
     "stringField" : "someValue",
     "aDataField" : {
         "aDataString" : "aString",
         "aDataAnotherString" : "anotherString"
     }
}

Но принятый json должен быть как

 {
     "booleanField" : true,
     "stringField" : "someValue",
     "aDataString" : "aString",
     "aDataAnotherString" : "anotherString"
}

Итак, есть способ (например, некоторыеаннотации), чтобы избежать создания элемента aDataField во время синтаксического анализа и поместить только его содержимое в json?

1 Ответ

0 голосов
/ 11 ноября 2019

Нет, вы должны установить его вручную

MyDataClass будет иметь еще одну переменную aDataAnotherString и его методы получения и установки, а затем вставит ее

MyDataClass myData = response;
if(myData != null && myData.getADataClass() != null){
    myData.setaDataAnotherString(myData.getADataClass().getaDataAnotherString());
}
...