#java #android #api #kotlin #datamodel
#java #Android #API #kotlin #datamodel
Вопрос:
Я пытался написать модель данных для отправки JSON в API и удаления некоторых полей. JSON должен содержать идентификатор некоторых слов, и он должен выглядеть точно так :
{
"words":[3,4,5]
}
насколько я знаю, а также как https://jsonformatter.org / сказал, что класс данных должен быть чем-то вроде следующего фрагмента кода:
data class words(var id: List<Int>)
но проблема в том, что когда я передаю ему данные и проверяю, является ли это допустимым запросом JSON для сервера, результат будет таким :
words(id=[1,2,4,5])
и это не то, что должно быть.
как я уже сказал, мне это нужно :
{
"words":[3,4,5]
}
Комментарии:
1. Во-первых, однако вы создаете свой
Toast
, а не генерируете JSON. Во-вторых, ваше имя свойства должно бытьwords
, а неid
.2. каким должно быть имя класса данных?
3. и если поджаривание не является хорошим способом убедиться, что окончательный json — это то, что мне нужно, так как я могу его протестировать?
4. мне нужно выяснить, что мне передать для модернизации
5. «каким должно быть имя класса данных?» — это может быть все, что вы хотите. «и если поджаривание не является хорошим способом убедиться, что окончательный json — это то, что мне нужно, так как я могу его протестировать? » — проблема не в
Toast
этом. Проблема в том, что вы, похоже, просто вызываетеtoString()
объект.toString()
не создает JSON, XML, CSV, HTML и т.д. Если вы правильно настроили Retrofit, он преобразует ваш объект в JSON для вас.
Ответ №1:
Я думаю, что должно сработать следующее.
data class AnyNameYouWant(val words: List<Int>)
Я думаю, что имя класса данных действительно не имеет значения, поскольку оно в конечном итоге будет представлять { }
объектный синтаксис json.
Глядя в комментарии, я думаю, что лучше использовать какую-нибудь библиотеку ведения журнала, такую как Timber. Если вы используете Retrofit, то use также может использовать HttpLoggingInterceptor
и установить уровень Body
, который будет печатать тело ответа в logcat.