java - Android:如何使用改造从 json 响应中获取特定字符串?

标签 java android json get retrofit

我正在尝试从 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/

相关文章:

javascript - 使用 cakePHP 3 将 JSON 对象保存为具有关联的实体

java - ExecutorService 执行 REST 请求

java - 克隆方法是否克隆覆盖的方法?

java - 为什么 JUnit 测试在 Ant Build System 中失败?

Android以编程方式禁用模拟器中EditText的自动完成/自动建议

android - 找不到满足版本约束的 'com.android.support:support-annotations'版本

android - 截取整个屏幕

json - golang lib/pq postgresql 创建动态更新语句

java - 将数据格式化为类似 JSON 的格式

java - 如何让 JPanel 显示在同一区域的其他面板之上