Java IllegalStateException:应为BEGIN\u对象,但为BEGIN\u数组
我正在努力学习MVP。我在教程和YouTube视频的帮助下编写了一段代码。首先,我使用了Json2Class插件。在那之后,我创建了一个Json服务器,只是为了测试RESTAPI中的Json文件Java IllegalStateException:应为BEGIN\u对象,但为BEGIN\u数组,java,android,json,Java,Android,Json,我正在努力学习MVP。我在教程和YouTube视频的帮助下编写了一段代码。首先,我使用了Json2Class插件。在那之后,我创建了一个Json服务器,只是为了测试RESTAPI中的Json文件 { "posts": [{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
{
"posts": [{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
}]}
下面是json文件的一个概览。我通过插件转换成Java类。那么在Presenter中我有这个方法
public void getPosts() {
getView().onShowDialog("Loading posts.....");
Observable<PostsResponse> postsResponseObservable = mApiService.getPosts();
subscribe(postsResponseObservable, this);
}
一切都提供了,但这里是GsonConverterFactory:
@Singleton
@Provides
GsonConverterFactory provideGsonConverterFactory(){
return GsonConverterFactory.create();
}
最后是地图绘制者:
public List<Post> mapPosts(PostsResponse response){
List<Post> postList = new ArrayList<>();
if (response != null) {
PostsResponsePosts[] responsePosts = response.getPosts();
if (responsePosts != null) {
for (PostsResponsePosts post : responsePosts) {
Post mPost = new Post();
mPost.setUserId(post.getUserId());
mPost.setId(post.getId());
mPost.setTitle(post.getTitle());
mPost.setBody(post.getBody());
postList.add(mPost);
}
}
}
return postList;
}
public List mapPosts(PostsResponse){
List postList=new ArrayList();
if(响应!=null){
PostsResponsePosts[]responsePosts=response.getPosts();
if(responsePosts!=null){
for(PostsResponsePosts post:responsePosts){
Post mPost=新Post();
mPost.setUserId(post.getUserId());
mPost.setId(post.getId());
mPost.setTitle(post.getTitle());
mPost.setBody(post.getBody());
postList.add(mPost);
}
}
}
返回postList;
}
但是我得到了
非法状态异常:应该是BEGIN\u对象,但在第1行第2列路径$
处是BEGIN\u数组。有什么解决办法吗?非常感谢。我认为问题出在mApiService.getPosts()中;方法。
请从mApiService添加代码。也许你有这样的想法:
Call<YourClass> getPosts();
调用getPosts();
换成
Call<List<YourClass>> getPosts();
调用getPosts();
对不起,我的英语…我认为问题出在mApiService.getPosts()中;方法。 请从mApiService添加代码。也许你有这样的想法:
Call<YourClass> getPosts();
调用getPosts();
换成
Call<List<YourClass>> getPosts();
调用getPosts();
对不起,我的英语…因为我使用的是Json服务器,所以我不得不更改Json文件
{
"posts": [{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}
}
到
因为我使用的是Json服务器,所以我不得不将Json文件从
{
"posts": [{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}
}
到
我没有使用Call函数,我使用的是observeable。这里看一看:
@GET(“/posts”)可观察的getPosts()
我试图将其更改为observatable getPosts()
,但它不起作用。我没有使用Call函数,我使用的是observatable。这里看一看:@GET(“/posts”)可观察的getPosts()
我试图将其更改为可观察的getPosts()
,但没有成功。请共享您的Post
类。另外,看看这将有助于您了解模型类的错误。您可以共享PostsResponsePosts模型吗?也可能是您的服务器返回了与您共享的JSON不同的内容,请务必检查我是否也共享了下面的类。我解决了。这是我的json文件。我将分享我的解决方案。分享你的Post
课程。另外,看看这将有助于您了解模型类的错误。您可以共享PostsResponsePosts模型吗?也可能是您的服务器返回了与您共享的JSON不同的内容,请务必检查我是否也共享了下面的类。我解决了。这是我的json文件。我将分享我的解决方案。