java - Android:如何使用改造从 json 响应中获取特定字符串?
问题描述
我正在尝试从 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 );
推荐阅读
- css - css fontawesome 图标与按钮 ReactJS 内的两个文本行对齐
- android - 为Android构建时FeathersJS登录错误
- ruby-on-rails - 为什么我不能在 dockerfile 中加载环境变量?
- git - 操作在 300000 毫秒后超时,在“git clone”上收到 0 个字节中的 0 个字节
- python - ValueError:检查输入时出错:预期 conv2d_1_input 的形状为 (128, 75, 1) 但得到的数组的形状为 (1, 128, 1)
- excel - 用户表单的复杂变量名称
- python - Python3 argparse:当将字符串作为 arg 传递时运行 funcA,如果虚线 arg 运行另一个 func
- python - 为什么 python subprocess 命令在通过 API 调用执行时得到 [Errno 2] No such file or directory: 'ls': 'ls'
- twilio - 将 Twilio 语音 Autobot 转移到电话号码
- powerbi - 查找购买特定产品的每个 customerID 的最早日期行并在新列中返回日期