Итак, я начинающий разработчик Android и использую retrofit2 для выполнения запроса GET к моему API. Однако я получаю «ожидаемый массив begin_array, но был begin_object».
Я пытался прочитать эту проблему на многих сайтах, но ни один из них не был полезен (для меня), включая документацию по модернизации.
Я попытался создать класс POJO в kotlin и после этого урока: https://www.freshbytelabs.com/2018/05/how-to-fix-expected-beginarray-but-was.html.
Но я просто теряюсь, когда автор использует переменные, которые я не вижу объявленными в своем коде. Так что скопировать / вставить пример не получилось. Может быть, потому что я глупый, но я был бы признателен за любую помощь.
Ожидаемый ответ JSON (протестировано с почтальоном):
{
"value": [
{
"id": 1,
"uniqueId": "1b97653d-bafe-461f-b609-72ab6795737f",
"code": "NL",
"description": "something",
"isActive": true,
"dateCreated": "2019-04-12T22:41:28.4966667",
"dateModified": "2019-04-12T22:41:28.4966667",
"dateExpired": "9999-12-31T00:00:00",
"timestamp": "AAAAAAAAB9E=",
"responseUserList": []
}
],
"success": true,
"errorCode": null,
"errorMessage": null
}
Это моя главная:
var restLanguageService = Retrofit.Builder()
.baseUrl("https://30cookweb20190412110132.azurewebsites.net/")
.addConverterFactory(GsonConverterFactory.create())
.build()
var service = restLanguageService.create(RequestInterface::class.java)
var call = service.getAllLanguages()
call.enqueue(object: Callback<List<RequestInterface>>
{
override fun onResponse(call: Call<List<RequestInterface>>, response: Response<List<RequestInterface>>)
{
var restLanguages = response.body().toString()
if (!response.isSuccessful)
{
for (RestLanguage in restLanguages)
textView.text = "Code: " + response.code()
return
}
}
override fun onFailure(call: Call<List<RequestInterface>>, t: Throwable)
{
textView.text = t.message
}
})
Мой интерфейс:
interface RequestInterface
{
@GET("api/language/getalllangaugesasync")
fun getAllLanguages(): Call<List<RequestInterface>>
}
Мой класс данных:
data class LanguageResponse(
@SerializedName("errorCode")
@Expose
private val errorCode: Any,
@SerializedName("errorMessage")
@Expose
private val errorMessage: Any,
@SerializedName("success")
@Expose
private val success: Boolean,
@SerializedName("languageValue")
@Expose
private val value: List<Value>
)
Это моя строка, напечатанная в textView:
"ожидаемый begin_array, но был begin_object в строке 1, столбец 2, путь $"