- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我收到了这个改造2
ERROR: java.lang.illegalstateexception: expected begin_array but was begin_object
我不知道怎么解决
我在这里包含了我的完整代码
但我的错误是
E/ddd: onFailure: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
怎么了?
这是我的JSON
{"fom_combine":[{"mTitle":"Talaash","mYear":"2012"},{"mTitle":"Race 2","mYear":"2013"},{"mTitle":"October","mYear":"2018"},{"mTitle":"MS Dhoni: The Untold Story","mYear":"2016"},{"mTitle":"Phantom","mYear":"2015"},{"mTitle":"Baby","mYear":"2015"}]}
Search_Movie.class
public class Search_Movie {
@SerializedName("mTitle")
@Expose
private String mTitle;
@SerializedName("mYear")
@Expose
private long mYear;
public Search_Movie(String mTitle, long mYear) {
this.mTitle = mTitle;
this.mYear = mYear;
}
public String getmTitle() {
return mTitle;
}
public long getmYear() {
return mYear;
}}
ApiClient.java
public class ApiClient {
public static final String BASE_URL = "https://example.com/search/";
public static Retrofit retrofit;
public static Retrofit getApiClient(){
if (retrofit==null){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}}
API接口(interface)
public interface ApiInterface {
@GET("fom_combine.php")
Call<List<Search_Movie>> getContact(
@Query("name") String keyword
);}
Search_Activity.java
....
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private List<Search_Movie> contacts;
private Search_Adapter adapter;
private ApiInterface apiInterface;
ProgressBar progressBar;
....
progressBar = findViewById(R.id.prograss);
recyclerView = findViewById(R.id.recyclerView);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
fetchContact( "");
.....
public void fetchContact( String key){
apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
Call<List<Search_Movie>> call = apiInterface.getContact(key);
call.enqueue(new Callback<List<Search_Movie>>() {
@Override
public void onResponse(Call<List<Search_Movie>> call, Response<List<Search_Movie>> response) {
progressBar.setVisibility(View.GONE);
contacts = response.body();
adapter = new Search_Adapter(contacts, Search_Activity.this);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<Search_Movie>> call, Throwable t) {
progressBar.setVisibility(View.GONE);
Toast.makeText(Search_Activity.this, "Error\n"+t.toString(), Toast.LENGTH_LONG).show();
}
});
}
最佳答案
你需要创建另一个类
public class FomCombine {
@SerializedName("fom_combine")
@Expose
private List<Search_Movie> fom_combine;
public FomCombine(List<Search_Movie> fom_combine) {this.fom_combine = fom_combine;}
public List<Search_Movie> getfom_combine() {
return fom_combine;
}
}
然后改变 Call<List<Search_Movie>> call = apiInterface.getContact(key);
到
Call<FomCombine> call = apiInterface.getContact(key);
和
一样@GET("fom_combine.php")
Call<List<Search_Movie>> getContact(
@Query("name") String keyword
);}
到
@GET("fom_combine.php")
Call<FomCombine> getContact(
@Query("name") String keyword
);}
然后
Call<FomCombine> call = apiInterface.getContact(key);
call.enqueue(new Callback<FomCombine>() {
@Override
public void onResponse(Call<FomCombine> call, Response<FomCombine> response) {
progressBar.setVisibility(View.GONE);
contacts = response.body().getfom_combine();
adapter = new Search_Adapter(contacts, Search_Activity.this);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<FomCombine> call, Throwable t) {
progressBar.setVisibility(View.GONE);
Toast.makeText(Search_Activity.this, "Error\n"+t.toString(), Toast.LENGTH_LONG).show();
}
});
关于android - 预期为 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ - Retrofit 2 Android 中为 BEGIN_OBJECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55490926/
大家好,我遇到了 Expected a string but was BEGIN_OBJECT 的问题我已经浏览了 2 天了,我找不到解决方案,需要帮助来解决这个问题,谢谢 我将 json 内容存储在
我正在尝试读取一个简单的 JSON 响应: { "response": "ok" } 这是我的代码: JsonReader reader = new JsonReader(new InputStr
我是初学者,我正在我的应用中使用 Retrofit 2。我有这个 JSON。 (我尝试了很多解决方案,但对我没有任何帮助)。感谢您的帮助 我遇到的错误:应为 BEGIN_ARRAY 但在第 1 行第
我收到这个 json 作为来自休息服务器的响应: { "externalOrderId":"5cb9bc46-aaa3-43ff-bb1a-6b17443f63ea", "shortId
我正在尝试解析在我的应用程序中使用 gson 和 okhttp 的 JSON 字符串数据。 l 使用回收 View 来显示数据。当我运行应用程序时,我得到了致命的异常(exception) E/And
我是java初学者,我需要一些帮助,我看过很多关于的帖子,但没有解决他们的问题 我有来自 url 的 json 对象,就像这样 { 'history':[{ 'id':
我正在使用 Retrofit 2 发送 HTTP 请求,我已经定期完成了所有操作,但是,情况“不标准”。我有一个问题,响应类中要接收的对象之一曾经作为对象发送,而另一个作为列表发送。所以我不知道是在响
我从 .NET WS 获取 JSON 响应(项目列表),因此我想在 Android 应用程序中转换为列表。但是当使用 GSON 库时,出现以下异常: com.google.gson.JsonSynta
类别 class PrintRequest { private String data; private String userImageBase64;
如何使用 Retrofit 解析此内容?我收到错误 BEGIN_OBJECT but was BEGIN_ARRAY Json 如下,它包含一个结果数组对象,该对象有一个为 null 的数组对象和信息
我正在努力通过改造和 RXAndroid 从 Android 与我的 REST API 进行交互,但遇到了问题。 当我向“api/users/{id}/{id}/classes”发送 GET 请求时,
我已经阅读了很多有关此错误的答案,但没有找到适合我的解决方案,也许类对象不相同 我的错误是: com.google.gson.JsonSyntaxException:java.lang.Illegal
我在使用 retrofit 调用进行解析时遇到问题。这不是重复的问题。我尝试了太多的谷歌搜索也尝试了很多解决方案,但它在我的情况下不起作用。所以请不要对这个问题投反对票。 错误 05-04 04:18
我今天才开始使用 Retrofit 库。我在获取一些 json 数据时遇到问题。 我尝试获取的 JSON 数据如下所示: [ {"id":"1","genre_id":"27","name":"
我正在尝试解析 the JSON response from this link我得到了这个异常(exception): Expected BEGIN_ARRAY but was BEGIN_OBJE
我正在努力学习 MVP。我在教程和 YouTube 视频的帮助下编写了代码。首先,我使用了 Json2Class 插件。之后,我创建了一个 Json-Server,只是为了从 REST API 获取一
我这样构建我的 Retrofit 实例: Retrofit retrofit = new Retrofit.Builder() .baseUrl(server.url("/")
您好,我是 Retrofit 库的新手,我在解析某些 json 时遇到问题。我已经查看了 Stackoverflow 上的其他一些解决方案,但对我的问题不太满意。我试图让一个简单的网络服务工作。任何建
这是我的 JSON 数据: [ { "page": 0, "threads": [ { "
我在尝试将 JSON 解码为对象时遇到 GSON 错误。错误(Expected BEGIN_OBJECT but was STRING at line 3 column 22)指向下方输入的第 3 行
我是一名优秀的程序员,十分优秀!