Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 使用JSONObject调用改型。_Java_Android_Retrofit2_Okhttp3 - Fatal编程技术网

Java 使用JSONObject调用改型。

Java 使用JSONObject调用改型。,java,android,retrofit2,okhttp3,Java,Android,Retrofit2,Okhttp3,我必须从服务器发出get请求,这会给我很多信息。从我在搜索中发现的情况来看,似乎只有使用模型类才能做到这一点。要覆盖服务器发送给我的所有响应,我必须创建53个模型类来存储信息 我想知道是否有一种更简单的方法,比如将信息存储在JSON或其他东西中 我正在使用OKHttp进行改造 getTimeSessionsCall.enqueue(new Callback<JSONObject>() { @Override public void onResponse

我必须从服务器发出get请求,这会给我很多信息。从我在搜索中发现的情况来看,似乎只有使用模型类才能做到这一点。要覆盖服务器发送给我的所有响应,我必须创建53个模型类来存储信息

我想知道是否有一种更简单的方法,比如将信息存储在JSON或其他东西中

我正在使用OKHttp进行改造

getTimeSessionsCall.enqueue(new Callback<JSONObject>() {
        @Override
        public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {

            Log.i("getTimeSessions",Integer.toString(response.code()));

        }

        @Override
        public void onFailure(Call<JSONObject> call, Throwable t) {

        }
    });
getTimeSessionCall.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.i(“getTimeSessions”,Integer.toString(response.code());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
我试过这种电话,但它不存储任何东西。代码是200,但JSON仍然为空


提前谢谢你

JSONObject为null的原因是因为改型不知道如何解析您的响应。您可以做的是将响应作为字符串获取,然后从中构造JsonObject。为此,您需要使用
ScalarConvertorsFactory
,您的方法如下

getTimeSessionsCall.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {

           // Get the string and convert to JSONObject

        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {

        }
    });
getTimeSessionCall.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
//获取字符串并转换为JSONObject
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
别忘了加上


编译'com.squareup.reformation2:converter scalars:2.1.0'
并在使用
addConvertorFactory(scalarscovertorfactory.create())构建改装实例时添加转换器工厂
我建议使用
GsonConverterFactory

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

您可以使用根据json响应的模式创建json对象。使用这些工具,您可以享受将JSON转换为Java对象的魔力。

我认为,他尝试将其转换为JSON的原因是,即使生成了模型类,他也可能不需要所有的模型类。。因此,他们只会增加他的项目的规模,增加复杂性和内存消耗考虑改用GSON的JsonObject-它可以通过改造2中已有的GsonConverterFactory轻松映射-您可以将调用设置为API接口调用的结果。要使用最新版本的转换程序,请访问