android - 应为 BEGIN_ARRAY 但在第 1 行第 26 列路径 $.result 中为 STRING

标签 android json retrofit retrofit2

5预期 BEGIN_ARRAY 但在第 1 行第 26 列路径 $.resultExpected BEGIN_ARRAY 但在第 1 行第 26 列路径 $.resultExpected BEGIN_ARRAY 为 STRING 但在第 1 行第 26 列路径 $.result 为 STRING 预期为 BEGIN_ARRAY 但在第 1 行为 STRING 1列26路径$.result

最佳答案

从您的 logcat,您的 API 正在发送:

{"kode":"true","result":"Data ditemukan!"}

虽然你在 android 中的模型有:

@SerializedName("kode")
String kode;

@SerializedName("result")
List<DataModel> result;

您的模型期望“结果”是 Datamodel 对象的列表,而您的 api 返回一个字符串,您需要将 android 中“结果”的类型更改为字符串,或者确保您的 php 实际上是根据您的需要发送对象数组作为“结果”。

更一般地说,当你看到像这样的一行时

Expected BEGIN_ARRAY but was STRING at line 1 column 26 path $.result

这意味着 gson 转换器无法匹配您从调用模型中获得的内容。在这里,这意味着在某个时候他期待一个数组(预期的 BEGIN_ARRAY)但发现了其他东西,这里是一个字符串。 如果您查看您的 API 发送的行,它是

{"kode":"true","result":"Data ditemukan!"}

您看到第 26 列实际上是“Data ditemukan!”字符串的“字符,这就是您如何知道这是导致问题的“结果”字段的转换。

关于android - 应为 BEGIN_ARRAY 但在第 1 行第 26 列路径 $.result 中为 STRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52567209/

相关文章:

java - Android 无法对服务器进行 GET 改造 API 调用

java - 使用 ObjectBox 存储一对多关系列表?

android - Google Volley - 何时使用 Cache.remove 和 Cache.invalidate

java - 如何继续检查 EditText 是否为空(如果启用空按钮,否则禁用): android/java

ruby-on-rails - Rails 3 与 Sinatra

php - Highcharts 基本线

java - 如何从适配器类中的 onClick 方法加载 fragment

android - 如何正确旋转位图?

javascript - 使用 AJAX 从 JSON 文件中检索数据

Android:使用 Fabric、Twitter REST API 和 Retrofit 将图像添加到推文