我正在寻找一种解决方案,让我可以一起改进工作和GreenDao。
这是我的代码,不起作用。
Post是由greenDao生成器生成的类
编辑:此代码的运行返回我" retrofit.RetrofitError:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是第1行第2行路径$ BEGIN_OBJECT "
public static void test() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(BASE_URL)
.build();
PostsInterface postsInterface = restAdapter.create(PostsInterface.class);
Callback<List<Post>> callback = new Callback<List<Post>>() {
@Override
public void success(List<Post> posts, Response response) {
Log.d(TAG, response.toString());
}
@Override
public void failure(RetrofitError error) {
Log.d(TAG, error.toString());
}
};
postsInterface.getPosts(0, 10, callback);
}
public interface PostsInterface {
@GET("/posts")
void getPosts(@Query("start") int limit, @Query("count") int offset, Callback<List<Post>> callback);
}
答案 0 :(得分:0)
看起来请求返回的是Json对象而不是Json数组。确保服务器实际返回Post列表,并且当来自服务器的Post包含使用相同名称的普通对象时,Post对象不希望将命名字段作为数组。
答案 1 :(得分:0)
问题所在:回调&gt;回调
请在您的daogenerator上再创建一个名为DataPost的DAO,然后再在回调中创建,将其更改为Callback回调。
然后在DataPost模型中添加ToMany。
@ToMany
@JoinEntity(entity = Post.class, sourceProperty = "id", targetProperty = "id")
public List<Post> yourPropertyNamefromJSON; //--> to make the name it has to be the same as the JSON response for example :
JSON RESPONSE
{
"success": true,
"data": [
{
"name": "blah",
"description": "blah"
}]
}
public List<Post> data; //--> name have to be data
如果你的大脑问这个问题:为什么它还需要1个班级??? 解答:因为你的JSON以“{”(Curly Bracket)开头,它不是一个数组,而是以OBJECT开头。
这应该可以解决你的问题!!
好运!