簡體   English   中英

Android:如何使用改型從json響應中獲取特定字符串?

[英]Android: How to get specific string from json response using retrofit?

我正在嘗試從json響應中獲取特定的字符串值。 就我而言,我只需要值“ George”:

{
    "data": {
        "book_one": {
            "author": "George"
        },
        "book_two": {
            "author": "Thomas"
        },
        "book_three": {
            "author": "Henry",
            "award": "Gold"
        }
    }
}

但是,如果我僅從第一本書中查找作者的名字,我該如何區分不同書籍的作者?

我嘗試按照此處的答案進行改造:響應2:從響應正文獲取JSON

我認為我沒有正確理解它,因為我得到了一個空值。

我嘗試了以下方法:

Call<Result> checkData(@Field("author") String author);

創建了一個名為Result的類:


    @SerializedName("data")
    @Expose
    private String data;
    @SerializedName("book_one")
    @Expose
    private String book_one;
    @SerializedName("author")
    @Expose
    private String author;


    public String getData() {
        return data;
    }


    public void setData(String data) {
        this.data = data;
    }

    public String getBookOne() {
        return book_one;
    }


    public void setBookOne(String book_one) {
        this.book_one = book_one;
    }


    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

}

我嘗試撥打以下電話:

call.enqueue(new Callback<Result>() {
    @Override
    public void onResponse(Call<Result> call, Response<Result> response) { 
     if(response.isSuccessful()){
        response.body(); // have your all data
        String author =response.body().getAuthor();
        LOG.d(TAG, "author = " + author);
        }else   Toast.makeText(context,response.errorBody().string(),Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onFailure(Call<Result> call, Throwable t) {
     Toast.makeText(context,t.toString(),Toast.LENGTH_SHORT).show(); // ALL NETWORK ERROR HERE

    }
});

我得到的只是一個空值,而不是我所期望的只是“喬治”。 我意識到我也沒有指定僅在“ book_one”下尋找作者,但我不確定該怎么做。 誰能指導我?

像這樣嘗試

JSONObject books= obj.getJSONObject("data");
JSONObject book = books.getJSONObject("book_one");
String authName = book.getString("author");
System.out.println(authName );

暫無
暫無

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

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