Массив json недоступен в моем ответе, я пытаюсь сохранить мой ответ в классе модели, используя модификацию - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь получить ответ с помощью модернизации, но проблема в том, что в моем ответе нет массива Json. Как мы можем получить данные?

{
  "BTC": {
    "USD": 7183.56
  },
  "ETH": {
    "USD": 183.3
  }
}

Я пытаюсь код. который выглядит следующим образом:

@GET("/urlpath")   
Call<currency> getAllCurrency( Query("api-key") String api-key );

И я использую этот класс pojo;

public class currency {

        /**
         * BTC : {"USD":7183.56}
         */

        private BTCBean BTC;

        public BTCBean getBTC() {
            return BTC;
        }

        public void setBTC(BTCBean BTC) {
            this.BTC = BTC;
        }

        public static class BTCBean {
            /**
             * USD : 7183.56
             */

            private double USD;

            public double getUSD() {
                return USD;
            }

            public void setUSD(double USD) {
                this.USD = USD;
            }
        }
    }

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

Я думаю, что ваш класс POJO должен иметь 2 ключа, вы просто добавляете один из ключей BTC, попробуйте это:

public class currency {

        /**
         * BTC : {"USD":7183.56}
         */

        private BTCBean BTC;
        //add this 
        private BTCBean ETH;


        //add all setters and getters for the above 2 fields
        //...........
        //...........

         public static class BTCBean {//keep this as you did it.........}


}
0 голосов
/ 20 апреля 2020

Ваш класс Pojo, как показано ниже:

public class Currency{

@SerializedName("BTC")
@Expose
private BTC bTC;
@SerializedName("ETH")
@Expose
private ETH eTH;

public BTC getBTC() {
return bTC;
}

public void setBTC(BTC bTC) {
this.bTC = bTC;
}

public ETH getETH() {
return eTH;
}

public void setETH(ETH eTH) {
this.eTH = eTH;
}

public class ETH {

@SerializedName("USD")
@Expose
private Double uSD;

public Double getUSD() {
return uSD;
}

public void setUSD(Double uSD) {
this.uSD = uSD;
}

}

public class BTC {

@SerializedName("USD")
@Expose
private Double uSD;

public Double getUSD() {
return uSD;
}

public void setUSD(Double uSD) {
this.uSD = uSD;
}

}

}
0 голосов
/ 20 апреля 2020

Это может быть полезно для вас. Я использовал плагин RoboPOJOGenerator для генерации моделей из вашего ответа.

data class ResponseModel(

    @field:SerializedName("BTC")
    val bTC: BTC? = null,

    @field:SerializedName("ETH")
    val eTH: ETH? = null
)
data class BTC(

        @field:SerializedName("USD")
        val uSD: Double? = null
)
data class ETH(

        @field:SerializedName("USD")
        val uSD: Double? = null
)
...