[英]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.