Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让GsonConverterFactory解析某些字段?_Java_Android_Json_Gson_Retrofit2 - Fatal编程技术网

Java 让GsonConverterFactory解析某些字段?

Java 让GsonConverterFactory解析某些字段?,java,android,json,gson,retrofit2,Java,Android,Json,Gson,Retrofit2,给出以下JSON响应: { "status":true, "doc":[ { "_id":"9374", "t_id":"5678", "name":"Do calculus homework", "description":"Finish all assigned homework from chapters 1 and 2", "catego

给出以下JSON响应:

{
    "status":true,
    "doc":[
        {
            "_id":"9374",
            "t_id":"5678",
            "name":"Do calculus homework",
            "description":"Finish all assigned homework from chapters 1 and 2",
            "category":"test",
            "indexInList":0,
            "priority":3,
            "dateDue":1477291500000,
            "user":"def",
            "status":"ARCHIVED",
            "__v":0,
            "subtasks":[
                {
                    "name":"Finish Chapter 1 - Derivatives",
                    "isCompleted":false
                },
                {
                    "name":"Finish Chapter 1 - Integrals",
                    "isCompleted":false
                },
                {
                    "name":"Finish Chapter 2 - Graphing",
                    "isCompleted":false
                }
            ]
        },
        {
            "_id":"429808",
            "t_id":"1234",
            "name":"Write machine learning essay",
            "description":"Write essay on Bayesian networks",
            "category":"test",
            "indexInList":1,
            "priority":3,
            "dateDue":1477291500000,
            "user":"abc",
            "status":"ARCHIVED",
            "__v":0,
            "subtasks":[
                {
                    "name":"Write introduction",
                    "isCompleted":false
                },
                {
                    "name":"Write body",
                    "isCompleted":false
                },
                {
                    "name":"Write Conclusion",
                    "isCompleted":false
                }
            ]
        }
    ]
}
我把它和改型2一起使用。我的服务类如下所示:

private HavocService(String baseUrl) {
        //So network calls are async
        RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .client(client)
                .addCallAdapterFactory(rxAdapter)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        mHavocApi = retrofit.create(HavocAPI.class);
    }
我实际上是在处理接收任务中获取数据:

rxHelper.manageSubscription(HavocService.getInstance().getHavocAPI().getAllTasks(userId)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .compose(RxTiPresenterUtils.deliverLatestToView(this))
                .subscribe(mListOfTasks -> {
                    this.mListOfTasks = mListOfTasks;
                    getView().setTaskList(mListOfTasks);
                }, throwable -> {
                    LogUtil.e("Error with something.");
                })
        );
如何让我的GSONConverterFactory在
“doc”
数组中开始解析?我并不真正关心第一个
“status”
字段

我这样做是因为我得到了以下错误:
java.lang.IllegalStateException:应该是BEGIN\u数组,但在第1行第2列路径$
处是BEGIN\u对象。我很确定这是因为GSON试图解析第一项,而没有到达
“doc”
数组

我感谢所有的帮助

编辑

下面是HavocAPI(我只关心
getAllTasks()
现在是否工作。)

公共接口HavocAPI{
/**
*创建新任务
*
*@返回事务是否成功以及创建的任务的状态
*/
@标题({“接受:应用程序/json”,“内容类型:应用程序/json”})
@发布(“任务/创建/”)
可观察的createNewTask();
/**
*使用taskId删除指定的任务
*
*@param任务的taskID
*@交易的返回状态
*/
@标题({“接受:应用程序/json”,“内容类型:应用程序/json”})
@POST(“任务/删除/{task_id}/”)
可观察的deleteTask(@Path(“task_id”)字符串taskID);
/**
*更新任务
*
*@返回事务是否成功以及更新的任务的状态
*/
@标题({“接受:应用程序/json”,“内容类型:应用程序/json”})
@发布(“任务/更新/”)
可观测更新任务();
/**
*获取指定用户的所有任务
*
*@param用户的userId
*@从指定用户返回所有任务的列表
*/
@标题({“接受:应用程序/json”,“内容类型:应用程序/json”})
@获取(“任务/读取/{user_id}/”)
可观察的getAllTasks(@Path(“user_id”)字符串userId);
}

方法的返回类型不正确。您需要创建一个表示实际响应格式的新模型,然后通过它访问任务列表

class GetTasksResponse {
    bool status;
    @SerializedName("doc")
    List<Task> tasks;

    public List<Task> getTasks() {
        return tasks;
    }
}
类GetTasksResponse{
布尔状态;
@序列化名称(“文档”)
列出任务;
公共列表getTasks(){
返回任务;
}
}

方法的返回类型不正确。您需要创建一个表示实际响应格式的新模型,然后通过它访问任务列表

class GetTasksResponse {
    bool status;
    @SerializedName("doc")
    List<Task> tasks;

    public List<Task> getTasks() {
        return tasks;
    }
}
类GetTasksResponse{
布尔状态;
@序列化名称(“文档”)
列出任务;
公共列表getTasks(){
返回任务;
}
}

您需要向我们展示您的
HavocAPI
接口和getAllTasks api的返回类型模型。问题很可能出在模型上。很抱歉。我不认为那是必要的。我已经更新了OP。您需要向我们展示您的
HavocAPI
接口和getAllTasks api的返回类型模型。问题很可能出在模型上。很抱歉。我不认为那是必要的。我已经更新了OP。所以在我的API中,我会做一些类似的事情:
Observable getAllTasks()
?所以在我的API中,我会做一些类似的事情:
Observable getAllTasks()