Комплекс парсинга json android с использованием GSON - PullRequest
0 голосов
/ 18 июня 2020

У меня есть json файл, например

    {
        "type": "Feature",
        "properties": {
          "centlat": -20.63101971,
          "ICAOCODE": "FMMM",
          "REGION": "AFI",
          "FIRname": "FIR ANTANANARIVO",
          "centlong": 48.56534436,
          "StateCode": "MDG",
          "StateName": "Madagascar"
        },
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                57.00000190700007,
                -29.999999999999943
              ],
              [
                57.00000190700007,
                -22.333332061999954
              ],
              [
                55.50000190700007,
                -18.999999999999943
              ],
              [
                55.50000190700007,
                -9.999999999999943
              ],
              [
                45.00000190800006,
                -9.999999999999943
              ],
              [
                44.00000190800006,
                -10.333332060999965
              ],
              [
                41.50000190700007,
                -10.999999999999943
              ],
              [
                43.00000190700007,
                -14.999999999999943
              ],
              [
                40.00000190800006,
                -19.999999999999943
              ],
              [
                40.00000190800006,
                -29.999999999999943
              ],
              [
                57.00000190700007,
                -29.999999999999943
              ]
            ]
          ]
        }
      }

I have installed the plugin robo pogo generator which gave me this output

package com.example.airlineapp.model

import com.google.gson.annotations.SerializedName

data class GeographicalData(

    @field:SerializedName("geometry")
    val geometry: Geometry? = null,

    @field:SerializedName("type")
    val type: String? = null,

    @field:SerializedName("properties")
    val properties: Properties? = null
)

data class Geometry(

    @field:SerializedName("coordinates")
    val coordinates: ArrayList<Double?>? = null,

    @field:SerializedName("type")
    val type: String? = null
)

data class Properties(

    @field:SerializedName("centlong")
    val centlong: Double? = null,

    @field:SerializedName("centlat")
    val centlat: Double? = null,

    @field:SerializedName("FIRname")
    val fIRname: String? = null,

    @field:SerializedName("StateName")
    val stateName: String? = null,

    @field:SerializedName("StateCode")
    val stateCode: String? = null,

    @field:SerializedName("ICAOCODE")
    val iCAOCODE: String? = null,

    @field:SerializedName("REGION")
    val rEGION: String? = null
)

Я пытался разобрать код, но он всегда показывает Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 16 column 10 path $[0].geometry.coordinates[0]

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

Я также пробовал добавить массив массивов в мои классы POJO, аналогичные структуре файла json, но это не сработало.

Массив координат - это в основном массив массивов, трехуровневый массив

1 Ответ

0 голосов
/ 18 июня 2020

Ваша структура JSON неверна, вместо этой

...
 "coordinates": [
            [
              [
                57.00000190700007,
                -29.999999999999943
              ],
...

у вас должно быть это

...
 "coordinates": [
              {
                57.00000190700007,
                -29.999999999999943
              },
...
...