0

I'm wondering what is the easiest and best method to handle this whole bunch of JSON object (rates) in response? Here is a part of this response:

enter image description here

As you can see this rates object drags on long long behind the screen height.

My first idea was to simply create such two models:

data class ApiResponse(
    @SerializedName("base") val base: String,
    @SerializedName("date") val date: String,
    @SerializedName("rates") val rates: Currency
)

and

data class Currency (
    @SerializedName("AED") val AED: Float,
    @SerializedName("AFN") val AFN: Float,
    @SerializedName("ALL") val ALL: Float,
    @SerializedName("AMD") val AMD: Float,
    @SerializedName("ANG") val ANG: Float,
    @SerializedName("AOA") val AOA: Float,
    @SerializedName("ARS") val ARS: Float,
    @SerializedName("AUD") val AUD: Float,
    @SerializedName("AWG") val AWG: Float,
    @SerializedName("AZN") val AZN: Float,
    @SerializedName("BAM") val BAM: Float,
    @SerializedName("BBD") val BBD: Float,
    @SerializedName("BDT") val BDT: Float,
    @SerializedName("BGN") val BGN: Float,
    @SerializedName("BHD") val BHD: Float,
    @SerializedName("BIF") val BIF: Float,
    @SerializedName("BMD") val BMD: Float,
    @SerializedName("BND") val BND: Float,
    @SerializedName("BOB") val BOB: Float,
    @SerializedName("BRL") val BRL: Float,
    @SerializedName("BSD") val BSD: Float,
    @SerializedName("BTC") val BTC: Float,
    @SerializedName("BTN") val BTN: Float,
    @SerializedName("BWP") val BWP: Float,
    @SerializedName("BYR") val BYR: Float,
    @SerializedName("BYN") val BYN: Float,
    @SerializedName("BZD") val BZD: Float,
    @SerializedName("CAD") val CAD: Float,
    @SerializedName("CDF") val CDF: Float,
    @SerializedName("CHF") val CHF: Float,
    @SerializedName("CLF") val CLF: Float,
    @SerializedName("CLP") val CLP: Float,
    @SerializedName("CNY") val CNY: Float,
    @SerializedName("COP") val COP: Float,
    @SerializedName("CRC") val CRC: Float,
    @SerializedName("CUC") val CUC: Float,
    @SerializedName("CUP") val CUP: Float,
    @SerializedName("CVE") val CVE: Float,
    @SerializedName("CZK") val CZK: Float,
    @SerializedName("DJF") val DJF: Float,
    @SerializedName("DKK") val DKK: Float,
    @SerializedName("DOP") val DOP: Float,
    @SerializedName("DZD") val DZD: Float,
    @SerializedName("EGP") val EGP: Float,
    @SerializedName("ERN") val ERN: Float,
    @SerializedName("ETB") val ETB: Float,
    @SerializedName("EUR") val EUR: Float,
    @SerializedName("FJD") val FJD: Float,
    @SerializedName("FKP") val FKP: Float,
    @SerializedName("GBP") val GBP: Float,
    @SerializedName("GEL") val GEL: Float,
    @SerializedName("GGP") val GGP: Float,
    @SerializedName("GHS") val GHS: Float,
    @SerializedName("GIP") val GIP: Float,
    @SerializedName("GMD") val GMD: Float,
    @SerializedName("GNF") val GNF: Float,
    @SerializedName("GTQ") val GTQ: Float,
    @SerializedName("GYD") val GYD: Float,
    @SerializedName("HKD") val HKD: Float,
    @SerializedName("HNL") val HNL: Float,
    @SerializedName("HRK") val HRK: Float,
    @SerializedName("HTG") val HTG: Float,
    @SerializedName("HUF") val HUF: Float,
    @SerializedName("IDR") val IDR: Float,
    @SerializedName("ILS") val ILS: Float,
    @SerializedName("IMP") val IMP: Float,
    @SerializedName("INR") val INR: Float,
    @SerializedName("IQD") val IQD: Float,
    @SerializedName("IRR") val IRR: Float,
    @SerializedName("ISK") val ISK: Float,
    @SerializedName("JEP") val JEP: Float,
    @SerializedName("JMD") val JMD: Float,
    @SerializedName("JOD") val JOD: Float,
    @SerializedName("JPY") val JPY: Float,
    @SerializedName("KES") val KES: Float,
    @SerializedName("KGS") val KGS: Float,
    @SerializedName("KHR") val KHR: Float,
    @SerializedName("KMF") val KMF: Float,
    @SerializedName("KPW") val KPW: Float,
    @SerializedName("KRW") val KRW: Float,
    @SerializedName("KWD") val KWD: Float,
    @SerializedName("KYD") val KYD: Float,
    @SerializedName("KZT") val KZT: Float,
    @SerializedName("LAK") val LAK: Float,
    @SerializedName("LBP") val LBP: Float,
    @SerializedName("LKR") val LKR: Float,
    @SerializedName("LRD") val LRD: Float,
    @SerializedName("LSL") val LSL: Float,
    @SerializedName("LTL") val LTL: Float,
    @SerializedName("LVL") val LVL: Float,
    @SerializedName("LYD") val LYD: Float,
    @SerializedName("MAD") val MAD: Float,
    @SerializedName("MDL") val MDL: Float,
    @SerializedName("MGA") val MGA: Float,
    @SerializedName("MKD") val MKD: Float,
    @SerializedName("MMK") val MMK: Float,
    @SerializedName("MNT") val MNT: Float,
    @SerializedName("MOP") val MOP: Float,
    @SerializedName("MRO") val MRO: Float,
    @SerializedName("MUR") val MUR: Float,
    @SerializedName("MVR") val MVR: Float,
    @SerializedName("MWK") val MWK: Float,
    @SerializedName("MXN") val MXN: Float,
    @SerializedName("MYR") val MYR: Float,
    @SerializedName("MZN") val MZN: Float,
    @SerializedName("NAD") val NAD: Float,
    @SerializedName("NGN") val NGN: Float,
    @SerializedName("NIO") val NIO: Float,
    @SerializedName("NOK") val NOK: Float,
    @SerializedName("NPR") val NPR: Float,
    @SerializedName("NZD") val NZD: Float,
    @SerializedName("OMR") val OMR: Float,
    @SerializedName("PAB") val PAB: Float,
    @SerializedName("PEN") val PEN: Float,
    @SerializedName("PGK") val PGK: Float,
    @SerializedName("PHP") val PHP: Float,
    @SerializedName("PKR") val PKR: Float,
    @SerializedName("PLN") val PLN: Float,
    @SerializedName("PYG") val PYG: Float,
    @SerializedName("QAR") val QAR: Float,
    @SerializedName("RON") val RON: Float,
    @SerializedName("RSD") val RSD: Float,
    @SerializedName("RUB") val RUB: Float,
    @SerializedName("RWF") val RWF: Float,
    @SerializedName("SAR") val SAR: Float,
    @SerializedName("SBD") val SBD: Float,
    @SerializedName("SCR") val SCR: Float,
    @SerializedName("SDG") val SDG: Float,
    @SerializedName("SEK") val SEK: Float,
    @SerializedName("SGD") val SGD: Float,
    @SerializedName("SHP") val SHP: Float,
    @SerializedName("SLL") val SLL: Float,
    @SerializedName("SOS") val SOS: Float,
    @SerializedName("SRD") val SRD: Float,
    @SerializedName("STD") val STD: Float,
    @SerializedName("SVC") val SVC: Float,
    @SerializedName("SYP") val SYP: Float,
    @SerializedName("SZL") val SZL: Float,
    @SerializedName("THB") val THB: Float,
    @SerializedName("TJS") val TJS: Float,
    @SerializedName("TMT") val TMT: Float,
    @SerializedName("TND") val TND: Float,
    @SerializedName("TOP") val TOP: Float,
    @SerializedName("TRY") val TRY: Float,
    @SerializedName("TTD") val TTD: Float,
    @SerializedName("TWD") val TWD: Float,
    @SerializedName("TZS") val TZS: Float,
    @SerializedName("UAH") val UAH: Float,
    @SerializedName("UGX") val UGX: Float,
    @SerializedName("USD") val USD: Float,
    @SerializedName("UYU") val UYU: Float,
    @SerializedName("UZS") val UZS: Float,
    @SerializedName("VEF") val VEF: Float,
    @SerializedName("VND") val VND: Float,
    @SerializedName("VUV") val VUV: Float,
    @SerializedName("WST") val WST: Float,
    @SerializedName("XAF") val XAF: Float,
    @SerializedName("XAG") val XAG: Float,
    @SerializedName("XAU") val XAU: Float,
    @SerializedName("XCD") val XCD: Float,
    @SerializedName("XDR") val XDR: Float,
    @SerializedName("XOF") val XOF: Float,
    @SerializedName("XPF") val XPF: Float,
    @SerializedName("YER") val YER: Float,
    @SerializedName("ZAR") val ZAR: Float,
    @SerializedName("ZMK") val ZMK: Float,
    @SerializedName("ZMW") val ZMW: Float,
    @SerializedName("ZWL") val ZWL: Float
)

Tell me what is the best way to do that?

Qbi
  • 445
  • 4
  • 13
  • 1
    `and how to put that whole bunch of data later in recyclerview?` best to focus on one problem at a time, or your question will get closed – a_local_nobody Jul 22 '21 at 18:01
  • There is nothing wrong with what you are proposing to do with the data objects – tyczj Jul 22 '21 at 18:13
  • I suggest migrating away from GSON and using more modern solution that'll let you deserialize `rates` as a map or an array. – Pawel Jul 22 '21 at 18:27
  • Please try this https://www.json2kotlin.com/. . here paste your JSON response and convert them in kotlin it will generate data class may help you – gpuser Jul 22 '21 at 19:17
  • I'd say for concise code, why not convert the price list to a `Hashmap`? You can query it for required value., see the answers [here - Convert a JSON String to a HashMap](https://stackoverflow.com/a/21720953/8244632), using GSON or Jackson, wasn't expecting but literally 2 lines. One GSON based solution - `HashMap map = new Gson().fromJson(json.toString(), HashMap.class);`. – Lalit Fauzdar Jul 22 '21 at 19:33

1 Answers1

0

You could use the gson library of google to transfer data: https://github.com/google/gson

dependencies {
    implementation 'com.google.code.gson:gson:2.8.7'
}

transfer your data to the ApiResponse class

fun getApiResponse(jsonStr:String):ApiResponse{
    val gson = Gson()
    val comment: ApiResponse = gson.fromJson(jsonStr, ApiResponse::class.java)
    return comment
}
zhangxaochen
  • 32,744
  • 15
  • 77
  • 108