Как я могу вставить много атрибутов JSON в объект, используя GSON - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь проанализировать JSON (http://economia.awesomeapi.com.br/json/all) ответ, я не знаю, почему при использовании Gson (). FromJson () мой объект не заполняется.

Метод GetCoinsBalanceJson

    private void getCoinsBalanceJson() {
    String httpURL = "http://economia.awesomeapi.com.br/json/all";
    URL myUrl;
    StringBuilder coinData = new StringBuilder();
    CoinJsonWrapper coinJsonWrapper = new CoinJsonWrapper();

    try {
        myUrl = new URL(httpURL);
        HttpURLConnection conn = (HttpURLConnection) myUrl.openConnection();
        conn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
        InputStream is = conn.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        String inputLine;

        while ((inputLine = br.readLine()) != null) {
            coinData.append(inputLine);

        }
        Gson g = new Gson();

        //CoinJsonWrapper[] enums = g.fromJson(coinData, CoinJsonWrapper[].class);
        coinJsonWrapper = g.fromJson(coinData.toString(), CoinJsonWrapper.class);    // This Object is not been Populated :(

    } catch (Exception e) {
        System.out.println("Exception is " + e.getMessage());
    }
}

Класс CoinJsonWrapper

    public class CoinJsonWrapper {

    @SerializedName("code")
    private String code;

    @SerializedName("codein")
    private String codein;

    @SerializedName("name")
    private String name;

    @SerializedName("high")
    private Float high;

    @SerializedName("low")
    private Float low;

    @SerializedName("ask")
    private Float ask;

    @SerializedName("timestamp")
    private Long timestamp;

    @SerializedName("create_date")
    private String create_date;

    public final String get_code() {
        return this.code;
    }

    public final String get_codein() {
        return this.codein;
    }

    public final String get_name() {
        return this.code;
    }

    public final Float get_high() {
        return this.high;
    }

    public final Float get_low() {
        return this.low;
    }

    public final Float get_ask() {
        return this.ask;
    }

    public final Long get_timestamp() {
        return this.timestamp;
    }

     public final String get_create_date() {
        return this.create_date;
    }


}

Я не знаю, почему мой объект -> coinJsonWrapper не заполнен значениями ответа Json. Может кто-нибудь помочь мне с этимПроблемам?

Ткс!

1 Ответ

0 голосов
/ 26 сентября 2018

Вы не правильно определили класс вашей модели, они должны выглядеть следующим образом:

public class Coin {

    @SerializedName("code")
    private String code;

    @SerializedName("codein")
    private String codein;

    @SerializedName("name")
    private String name;

    @SerializedName("high")
    private Float high;

    @SerializedName("low")
    private Float low;

    @SerializedName("ask")
    private Float ask;

    @SerializedName("timestamp")
    private Long timestamp;

    @SerializedName("create_date")
    private String create_date;

    public final String get_code() {
        return this.code;
    }

    public final String get_codein() {
        return this.codein;
    }

    public final String get_name() {
        return this.code;
    }

    public final Float get_high() {
        return this.high;
    }

    public final Float get_low() {
        return this.low;
    }

    public final Float get_ask() {
        return this.ask;
    }

    public final Long get_timestamp() {
        return this.timestamp;
    }

    public final String get_create_date() {
        return this.create_date;
    }
}

И

public class CoinsWrapper {

    @SerializedName("USDT")
    private Coin usdt;

    @SerializedName("USD")
    private Coin usd;

    @SerializedName("CAD")
    private Coin cad;

    @SerializedName("EUR")
    private Coin eur;

    @SerializedName("GBP")
    private Coin gbp;

    @SerializedName("ARS")
    private Coin ars;

    @SerializedName("BTC")
    private Coin btc;

    public final Coin get_usdt() {
        return this.usdt;
    }

    public final Coin get_usd() {
        return this.usd;
    }

    public final Coin get_cad() {
        return this.cad;
    }

    public final Coin get_eur() {
        return this.eur;
    }

    public final Coin get_gbp() {
        return this.gbp;
    }

    public final Coin get_ars() {
        return this.ars;
    }

    public final Coin get_btc() {
        return this.btc;
    }
}

А в вашем методе getCoinsBalanceJson:

coinJsonWrapper = g.fromJson(coinData.toString(), CoinsWrapper.class);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...