我正在对这个Google Books API URL做出响应
我有一个改装要求:'
public interface BookApiService {
@GET("/books/v1/volumes")
Call<Books> getBooks(@Query("q") String query);
}
public class Books {
@SerializedName("items")
@Expose
private List<Book> items;
public List<Book> getItems() {
return items;
}
}
和book.java
public class Book {
@SerializedName("title")
@Expose
private String mTitle;
public String getTitle() {
return mTitle;
}
}
请求工作正确,我的意思是连接没有错误,并且改型返回的是响应,而不是失败。但我的字符串“title”为空。我怎么才能得到这个。请通过上面的链接检查JSON响应。
更新:
改装呼叫:
public class BookService{
private static final String BASE_URL = "https://www.googleapis.com/";
private BookApiService mApiService;
private BookCallback mListener;
public BookService(BookCallback listener){
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build();
mApiService = retrofit.create(BookApiService.class);
mListener = listener;
}
public void getBooks(String query){
Call<Books> call = mApiService.getBooks(query);
call.enqueue(new Callback<Books>() {
@Override
public void onResponse(Call<Books> call, Response<Books> response) {
mListener.notifyDataReceived(response.body());
}
@Override
public void onFailure(Call<Books> call, Throwable t) {
mListener.notifyErrorReceived(t);
}
});
}
public interface BookCallback{
void notifyDataReceived(Books books);
void notifyErrorReceived(Throwable error);
}
BookCallback侦听器是我的主要活动:当我检查日志时,有
“成功”“标题%1为空”
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.addItemDecoration(new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL));
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
new BookService(this).getBooks("android");
}
@Override
public void notifyDataReceived(Books books) {
if(books.getItems() != null) {
List<Book> items = books.getItems();
Log.d(TAG, "Success");
Log.d(TAG, "TITLE 1" + items.get(0).getTitle());
setupAdapter(items);
}
}
您可以在这里的浏览器中直接请求JSON。仔细查看此数据,您将看到items[0]
没有属性title
。相反,有一个属性volumeinfo
包含title
。您的翻新实体类需要正确导航到该属性,以便获取所需的数据。
我最近才开始使用Registfit+Gson,尽管我四处寻找解决问题的答案,并尝试了几种解决方案,但似乎没有任何效果,反而导致: 我发出请求的片段代码... 以防万一有人感兴趣... 我理解错误消息,我只是想弄清楚如何让Gson期望JSONArray。我肯定我的错误是显而易见的,但我没有看到或理解它。提前感谢您的帮助!
我正在做一个项目,在那里用户可以写其他用户的邮件。邮件类当前如下所示: 现在,问题是,我需要将所有邮件保存到. yml用户数据文件中。对我来说,最简单的方法是首先将每封邮件转换为字符串,然后将所有邮件保存到
问题内容: 我得到的输出为 控制器中的日期Mon Dec 31 IST 2012 请提出一种以格式输出日期的方法。需要以日期格式而不是字符串形式输出,以便将输出存储在mysql db的字段中 问题答案: 声明后 您有一个对象, 可以将其按原样存储在mysql DB中 (列类型:datetime)。 但是,在打印时,它默认为实现。我认为您希望获得类似Date @的输出,但是toString以用户可读
如果我尝试实现一个自定义转换器(我在网上找到了一些例子),它会抱怨我没有实现抽象方法convert(F),而这些例子都没有实现。 谢了。
问题内容: 我从字符串定义一个新的gson对象: 此处的字符串示例:http : //api.soundrop.fm/spaces/XJTt3mXTOZpvgmOc 然后尝试返回一个值: 最后用: 但是我得到一个错误: 完整班:主班:http : //pastebin.com/v4LrZm6k 无线电班:http : //pastebin.com/2BWwb6eD 问题答案: 这是Java。字段根