Ожидаемый BEGIN_ARRAY, но был STRING, но JSON верен - PullRequest
0 голосов
/ 17 июня 2019

Я искал другие похожие вопросы, но не смог найти свои ответы.

Это мой JSON: имя appointments.json

   [
  {
    "title": "Primary Care",
    "text": "Schedule a Primary Care appointment online.",
    "image": "http://i.imgur.com/DvpvklR.png"
  },
  {
    "title": "Primary Care",
    "text": "Schedule a Primary Care appointment online.",
    "image": "http://i.imgur.com/DvpvklR.png"
  },
  {
    "title": "Primary Care",
    "text": "Schedule a Primary Care appointment online.",
    "image": "http://i.imgur.com/DvpvklR.png"
  },
  {
    "title": "Primary Care",
    "text": "Schedule a Primary Care appointment online.",
    "image": "http://i.imgur.com/DvpvklR.png"
  }
]

Вот класс объектов списка:

    @Parcelize
data class AppointmentsListItem(
        @Expose
        @SerializedName("title")
        val title: String = "",
        @Expose
        @SerializedName("text")
        val text: String = "",
        @Expose
        @SerializedName("image")
        val image: String = "") : IAppointmentsListItem

Здесь моя ошибка:

val gson = GsonBuilder().excludeFieldsWithoutExposeAnnotation()
        .create()

private val listType = object : TypeToken<List<AppointmentsListItem>>() {}.type

    val apiList: List<AppointmentsListItem> = gson.fromJson("appointments.json", listType)

Откуда, черт возьми, приходит СТРУНА ?? Мой ответ Json представляет собой массив этих ListItems, я начинаю ответ с [], так почему он читает строку?

1 Ответ

0 голосов
/ 17 июня 2019

Откуда, черт возьми, приходит STRING?

"appointments.json" - это строка.Более того, "appointments.json" не является допустимой строкой JSON, так как начинается с a, а не [ или {.

Я предполагаю, что appointments.json должно быть именем файла.Однако Гсон этого не знает, и голое имя файла бесполезно.Вам нужно предоставить Gson InputStream или Reader для самого JSON, будь то, например:

  • FileReader (где вы предоставляете File, который указывает нагде бы ни находилось appointments.json)
  • InputStream с ContentResolver и openInputStream()
  • InputStream с AssetManager и open()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...