簡體   English   中英

使用Gson在翻新中解析JSON

[英]Parsing JSON in Retrofit using Gson

我有一個具有以下結構的JSON文件:

{
 "FLYWEIGHT": [
 {
 "name": "Henry Cejudo"
 },
 {
 "name": "Sergio Borg"
 },.........], 
 {...},
 ...]}

我正在努力與Gson進行分析。 我對UfcRankFighterList具有以下結構:

public class UfcRank {

@SerializedName("name")
private String name;
}


public class FighterList {

@SerializedName("FLYWEIGHT")
public List<UfcRank> FLYWEIGHT;

}

我使用retrofit來解析:

RankingsApi service = RankingsRestAdapter.getRetrofitInstance().create(RankingsApi.class);
Call<Fighterlist> call = service.getRankingsApi();

call.enqueue(new Callback<FighterList>() {
    @Override
    public void onResponse(Call<FighterList> call, Response<FighterList> response) {
    FighterList data = new Gson().fromJson(response.body().toString(), FighterList.class);

}

我具有RankingsApiRankingsRestAdapter的以下結構:

public interface RankingsApi {

@GET("last_ready_run/data?api_key=XXXXXX")
Call<FighterList> getRankingsApi();

}

public class RankingsRestAdapter {

public static final String RANKINGS_URL = "XXXXXXX"
public static Retrofit retrofit;

public static Retrofit getRetrofitInstance() {

if (retrofit == null) {
    retrofit = new retrofit2.Retrofit.Builder()
    .baseUrl(RANKINGS_URL)
    .addConverterFactor(GsonConverterFactory.create())
    .build();
}
return retrofit;
}
}

現在我收到錯誤:

Expected BEGIN_OBJECT but Was STRIng at line 1 column 1 path $

這是由於我如何構造UfcRankFighterList類嗎?

謝謝! :)

由於在構建Retrofit實例時使用了GsonConverterFactory ,因此已經使用了Gson解析,它可以直接為您提供模型類的引用。 您不應該再次解析。

@Override
public void onResponse(Call<FighterList> call, Response<FighterList> response) {
    if(response.isSuccessful() {
        FighterList data = response.body();
    } else {
        // Handle error.
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM