我正在尝试从 json 响应中获取特定的字符串值。就我而言,我只需要值“George”:
{
"data": {
"book_one": {
"author": "George"
},
"book_two": {
"author": "Thomas"
},
"book_three": {
"author": "Henry",
"award": "Gold"
}
}
}
但是,如果我只查找第一本书中的作者姓名,如何区分不同书籍的作者呢?
我尝试遵循这里的答案 Retrofit 2: Get JSON from Response body
我认为我没有正确理解它,因为我得到了一个空值。
我尝试过以下方法:
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
}
});
我得到的只是一个空值,而不是我所期望的“George”。我意识到我也没有指定我只是在“book_one”下寻找作者,但我不知道该怎么做。谁能指导我吗?
最佳答案
尝试这样
JSONObject books= obj.getJSONObject("data");
JSONObject book = books.getJSONObject("book_one");
String authName = book.getString("author");
System.out.println(authName );
关于java - Android:如何使用改造从 json 响应中获取特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487355/