Cześć ! Mam pytanie.
Jak zdeserializować takiego JSON-a:
[{
"table": "A",
"no": "024/A/NBP/2019",
"effectiveDate": "2019-02-04",
"rates": [{
"currency": "bat (Tajlandia)",
"code": "THB",
"mid": 0.1194
}, {
"currency": "dolar amerykański",
"code": "USD",
"mid": 3.7408
}, {
"currency": "dolar australijski",
"code": "AUD",
"mid": 2.7040
}, {
"currency": "dolar Hongkongu",
"code": "HKD",
"mid": 0.4765
}, {
"currency": "dolar kanadyjski",
"code": "CAD",
"mid": 2.8575
}, {
"currency": "dolar nowozelandzki",
"code": "NZD",
"mid": 2.5772
}, {
"currency": "dolar singapurski",
"code": "SGD",
"mid": 2.7645
}, {
"currency": "euro",
"code": "EUR",
"mid": 4.2813
}, {
"currency": "forint (Węgry)",
"code": "HUF",
"mid": 0.013474
}, {
"currency": "frank szwajcarski",
"code": "CHF",
"mid": 3.7511
}, {
"currency": "funt szterling",
"code": "GBP",
"mid": 4.8868
}, {
"currency": "hrywna (Ukraina)",
"code": "UAH",
"mid": 0.1365
}, {
"currency": "jen (Japonia)",
"code": "JPY",
"mid": 0.034043
}, {
"currency": "korona czeska",
"code": "CZK",
"mid": 0.1664
}, {
"currency": "korona duńska",
"code": "DKK",
"mid": 0.5735
}, {
"currency": "korona islandzka",
"code": "ISK",
"mid": 0.031205
}, {
"currency": "korona norweska",
"code": "NOK",
"mid": 0.4422
}, {
"currency": "korona szwedzka",
"code": "SEK",
"mid": 0.4123
}, {
"currency": "kuna (Chorwacja)",
"code": "HRK",
"mid": 0.5774
}, {
"currency": "lej rumuński",
"code": "RON",
"mid": 0.9010
}, {
"currency": "lew (Bułgaria)",
"code": "BGN",
"mid": 2.1890
}, {
"currency": "lira turecka",
"code": "TRY",
"mid": 0.7151
}, {
"currency": "nowy izraelski szekel",
"code": "ILS",
"mid": 1.0306
}, {
"currency": "peso chilijskie",
"code": "CLP",
"mid": 0.00572
}, {
"currency": "peso filipińskie",
"code": "PHP",
"mid": 0.0714
}, {
"currency": "peso meksykańskie",
"code": "MXN",
"mid": 0.1954
}, {
"currency": "rand (Republika Południowej Afryki)",
"code": "ZAR",
"mid": 0.2797
}, {
"currency": "real (Brazylia)",
"code": "BRL",
"mid": 1.0221
}, {
"currency": "ringgit (Malezja)",
"code": "MYR",
"mid": 0.9138
}, {
"currency": "rubel rosyjski",
"code": "RUB",
"mid": 0.0570
}, {
"currency": "rupia indonezyjska",
"code": "IDR",
"mid": 0.00026806
}, {
"currency": "rupia indyjska",
"code": "INR",
"mid": 0.052192
}, {
"currency": "won południowokoreański",
"code": "KRW",
"mid": 0.003341
}, {
"currency": "yuan renminbi (Chiny)",
"code": "CNY",
"mid": 0.5528
}, {
"currency": "SDR (MFW)",
"code": "XDR",
"mid": 5.2194
}]
}]
Kiedy mam tego JSON-a jako tekst w kodzie to deserializuje go tak:
val json = "moj json"
val gson = GsonBuilder().create()
val listType = object : TypeToken<List<MainModel>>() {}.type
gson.fromJson<Deserialize>(json, listType)
Wtedy wszystko działa.
Gdy próbuję pobrać ten JSON za pomocą Retrofit-a to pokazuje się mi taki błąd:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
Ten sam błąd miałem przy deserializacji ze zmiennej, ale naprawiłem to za pomocą TypeToken.
Czy da się to jakoś zaimplementować do Retrofit-a ?