我有以下JSON结构:
[
{
"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"
}
]
以下是我的APIService接口
:
public interface APIService {
@POST("posts")
Call<List<FakeJSON>> getItems();
}
下面是我的POJO类:
public class FakeJSON {
@SerializedName("userId")
@Expose
private int userId;
@SerializedName("id")
@Expose
private int id;
@SerializedName("title")
@Expose
private String title;
@SerializedName("body")
@Expose
private String body;
/**
* No args constructor for use in serialization
*
*/
public FakeJSON() {
}
/**
*
* @param id
* @param body
* @param title
* @param userId
*/
public FakeJSON(int userId, int id, String title, String body) {
super();
this.userId = userId;
this.id = id;
this.title = title;
this.body = body;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
最后,这里是我正在进行网络调用的activity
代码:
public class NetworkActivity extends AppCompatActivity {
private static Retrofit.Builder builder = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
builder = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit =
builder
.client(
httpClient.build()
)
.build();
APIService apiService = retrofit.create(APIService.class);
Call<List<FakeJSON>> listCall = apiService.getItems();
listCall.enqueue(new Callback<List<FakeJSON>>() {
@Override
public void onResponse(Call<List<FakeJSON>> call, Response<List<FakeJSON>> response) {
try {
Log.e("List Size", response.body().size()+"");
}catch (NullPointerException e){
e.printStackTrace();;
}
}
@Override
public void onFailure(Call<List<FakeJSON>> call, Throwable t) {
Log.e("Error", t.getMessage());
}
});
}
}
'E/错误:应为BEGIN_ARRAY,但为BEGIN_OBJECT
这意味着一个改型面向的是JSON对象,而不是数组。也许你从服务器上收到了一些错误?尝试手动执行相同的查询并查看响应。也许通过这种方式,您可以发现从代码中完成的请求是否有问题。
目前,我正在得到 com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_OBJECT,但在第1行第2列路径$处为BEGIN_ARRAY 请帮帮我.
我知道这已经不是第一次有人问这个问题了,但是在Treverfit2中,我找不到解决我问题的正确方法。我看了一个在线教程,效果很好。当我将相同的代码应用到我自己的endpoint时,我得到了这个异常:我不知道如何解决这个问题。 接口: 但这个不是: 我的音乐课:
我有一个Json和搜索特性,我的问题是: 我得到了3个项目: 1。测试1 2。测试2 3。测试3 错误: 要提一下,搜索“2”时会显示“测试2”,但搜索“测试2”会抛出错误。 它在工作于基本的Json,在切换到新的库之后,它停止了工作。 型号: 使连接方法(库方法):
我使用的是MVVMAndroid架构组件+改型结构。 答复: 现在这些是我的课。 虽然每次我都失败了。处为BEGIN_ARRAY 高级帮助将非常感谢!
在阅读@Ridcully的响应之后,我想问一下是否有一种方法可以更新,以便它知道JSON是一个数组。比如?
我正在学习youtube视频的改装,但现在我卡住了。它显示一个错误“reverfit expected begin_array but was begin_object at line 1 column 2 path$”我正在尝试从这个站点获取json数据。http://servicio-monkydevs.rhcloud.com/clientes/ ClientService.java clie