gpt4 book ai didi

android - 如何使用改造解析动态键响应

转载 作者:行者123 更新时间:2023-11-29 14:43:36 25 4
gpt4 key购买 nike

我在使用 retrofit 调用进行解析时遇到问题。这不是重复的问题。我尝试了太多的谷歌搜索也尝试了很多解决方案,但它在我的情况下不起作用。所以请不要对这个问题投反对票。

我也制作了 pojo 类,但不知道如何绑定(bind)它。数据.java

public class Data {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("symbol")
@Expose
private String symbol;
@SerializedName("website_slug")
@Expose
private String websiteSlug;
@SerializedName("rank")
@Expose
private Integer rank;
@SerializedName("circulating_supply")
@Expose
private Double circulatingSupply;
@SerializedName("total_supply")
@Expose
private Double totalSupply;
@SerializedName("max_supply")
@Expose
private Double maxSupply;
@SerializedName("quotes")
@Expose
private Quotes quotes;
@SerializedName("last_updated")
@Expose
private Integer lastUpdated;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSymbol() {
return symbol;
}

public void setSymbol(String symbol) {
this.symbol = symbol;
}

public String getWebsiteSlug() {
return websiteSlug;
}

public void setWebsiteSlug(String websiteSlug) {
this.websiteSlug = websiteSlug;
}

public Integer getRank() {
return rank;
}

public void setRank(Integer rank) {
this.rank = rank;
}

public Double getCirculatingSupply() {
return circulatingSupply;
}

public void setCirculatingSupply(Double circulatingSupply) {
this.circulatingSupply = circulatingSupply;
}

public Double getTotalSupply() {
return totalSupply;
}

public void setTotalSupply(Double totalSupply) {
this.totalSupply = totalSupply;
}

public Double getMaxSupply() {
return maxSupply;
}

public void setMaxSupply(Double maxSupply) {
this.maxSupply = maxSupply;
}

public Quotes getQuotes() {
return quotes;
}

public void setQuotes(Quotes quotes) {
this.quotes = quotes;
}

public Integer getLastUpdated() {
return lastUpdated;
}

public void setLastUpdated(Integer lastUpdated) {
this.lastUpdated = lastUpdated;
}
}

这是 quotes.java

public class Quotes {
@SerializedName("USD")
@Expose
private USD uSD;

public USD getUSD() {
return uSD;
}

public void setUSD(USD uSD) {
this.uSD = uSD;
}
public Map<String, USD> data;

}

这是 USD.java

public class USD {
@SerializedName("price")
@Expose
private Double price;
@SerializedName("volume_24h")
@Expose
private Double volume24h;
@SerializedName("market_cap")
@Expose
private Double marketCap;
@SerializedName("percent_change_1h")
@Expose
private Double percentChange1h;
@SerializedName("percent_change_24h")
@Expose
private Double percentChange24h;
@SerializedName("percent_change_7d")
@Expose
private Double percentChange7d;

public Double getPrice() {
return price;
}

public void setPrice(Double price) {
this.price = price;
}

public Double getVolume24h() {
return volume24h;
}

public void setVolume24h(Double volume24h) {
this.volume24h = volume24h;
}

public Double getMarketCap() {
return marketCap;
}

public void setMarketCap(Double marketCap) {
this.marketCap = marketCap;
}

public Double getPercentChange1h() {
return percentChange1h;
}

public void setPercentChange1h(Double percentChange1h) {
this.percentChange1h = percentChange1h;
}

public Double getPercentChange24h() {
return percentChange24h;
}

public void setPercentChange24h(Double percentChange24h) {
this.percentChange24h = percentChange24h;
}

public Double getPercentChange7d() {
return percentChange7d;
}

public void setPercentChange7d(Double percentChange7d) {
this.percentChange7d = percentChange7d;
}

}

这是网址。

https://api.coinmarketcap.com/v2/ticker/?limit=0

这是回应。

{
"data": {
"1": {
"id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"website_slug": "bitcoin",
"rank": 1,
"circulating_supply": 17020150.0,
"total_supply": 17020150.0,
"max_supply": 21000000.0,
"quotes": {
"USD": {
"price": 9334.59,
"volume_24h": 6857290000.0,
"market_cap": 158876121989.0,
"percent_change_1h": 0.12,
"percent_change_24h": -2.28,
"percent_change_7d": 0.55
}
},
"last_updated": 1525694372
},
"1027": {
"id": 1027,
"name": "Ethereum",
"symbol": "ETH",
"website_slug": "ethereum",
"rank": 2,
"circulating_supply": 99285221.0,
"total_supply": 99285221.0,
"max_supply": null,
"quotes": {
"USD": {
"price": 733.22,
"volume_24h": 3495650000.0,
"market_cap": 72797909741.0,
"percent_change_1h": 1.21,
"percent_change_24h": -5.64,
"percent_change_7d": 7.02
}
},
"last_updated": 1525694355
}
}
}

我尝试使用改造调用。

   ArrayList<PriceData> pricedatalist;
ArrayList<Data> datalistnew;
ArrayList<Quotes> quoteslist;
ArrayList<USD> usdlist;

ApiService apiService =
ApiClient.getClient().create(ApiService.class);

Call<Data> call = apiService.getChampionData();

call.enqueue(new Callback<Data>() {
@Override
public void onResponse(Call<Data> call, Response<Data> response) {
dd=response.body();
}

@Override
public void onFailure(Call<Data> call, Throwable t) {
Log.e("Error",t.getMessage());
}
});

最佳答案

需要更改Call<Data> call = apiService.getChampionData();的响应体类型

响应不能被解析为一个已解析的数据对象,相反你应该创建一个新的响应对象,如

public class DataResponse {
private Map<String, Data> data;
}

并称它为Call<DataResponse> call = apiService.getChampionData() ;

关于android - 如何使用改造解析动态键响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50227256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com