当前位置: 首页 > 知识库问答 >
问题:

Android Studio——由于预期的begin_array,无法从改装中获得响应,但begin_object错误

晏永康
2023-03-14

我试图通过改型从openweather api获取一些数据。目前,我无法得到任何回应,因为我遇到了如下错误:

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

我尝试添加

这是我的代码:

应用程序编程接口

public interface ApiInterface {
@GET("/data/2.5/weather")
Call<List<ModelClass>> getForecastData(
        @Query("lat") int lat,
        @Query("lon") int lon,
        @Query("appid") String api_key);
}

波约

    public class ModelClass {
    @SerializedName("main")
    List<Main> MainData = null;

    public List<Main> getMainData() {
        return MainData;
    }

    class Main{
        @SerializedName("temp")
        double temperature;
        @SerializedName("pressure")
        int pressure;

        public double getTemperature() {
            return temperature;
        }

        public void setTemperature(double temperature) {
            this.temperature = temperature;
        }

        public int getPressure() {
            return pressure;
        }

        public void setPressure(int pressure) {
            this.pressure = pressure;
        }
    }
}

主要活动

    public class MainActivity extends AppCompatActivity {
    public static final String BASE_URL = "https://api.openweathermap.org/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit mRetrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        ApiInterface mInterface = mRetrofit.create(ApiInterface.class);

        Call<List<ModelClass>> mForecastData = mInterface.getForecastData(
                35, 139, "API_KEY");

        mForecastData.enqueue(new Callback<List<ModelClass>>() {
            @Override
            public void onResponse(Call<List<ModelClass>> call, Response<List<ModelClass>> response) {
                if (!response.isSuccessful()) {
                    System.out.println(response.code());
                }
                Log.i(TAG, "onResponse: "+response.body());
            }

            @Override
            public void onFailure(Call<List<ModelClass>> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }
}

JSON响应

    {
      "main": {
        "temp": 274.44,
        "feels_like": 274.44,
        "temp_min": 273.66,
        "temp_max": 276.7,
        "pressure": 1006,
        "humidity": 75
      }
    }

在使用接口中的getForecastData时,我传递了真正的api密钥。


共有1个答案

家弘业
2023-03-14
Call<ModelClass> getForecastData

使用代码。JSON中有一个对象

 类似资料:
  • 我做了一个功能:输入身份证号码,点击提交按钮,然后获得身份证的基本信息。 我使用的模型是: 我使用的改装界面: 当我输入正确的身份证号码时,一切正常。返回的结果是: 一切运作良好。 然而,当我输入不正确的身份证号码时,不好的事情发生了: 返回的结果是: 我怎样才能修复这些漏洞?

  • 我每次都会收到这个错误:预期的begin_数组,但它是begin_对象。我不知道我是否需要添加反序列化程序或warrper类来进行改造,但我不知道如何以简单的方式来满足我所有项目的api json响应,下面是我的改造代码: - 我的Json: 我的源代码

  • 我正在通过改型和RXAndroid与来自android的REST API进行交互,我遇到了一个问题。 当我向我的“api/users/{id}/{id}/classes”发送GET请求时,我的api会以用户类列表作出响应,如下所示: 我的界面如下所示: 我从片段中这样称呼它: 我的类对象以及getter和setter如下所示: gson不应该看到“类”:[]数组并从中解析对象吗?我做错了什么

  • 我不熟悉GSON和改装,这是我的输出模型(仅供参考结构), 这是我的输出 这是我的改装代码 应为BEGIN_对象,但为BEGIN_数组“ 我尝试过用List替换RootObject

  • 我如何使用改造来解析这个?我得到错误BEGIN_OBJECT但却是BEGIN_ARRAY 现在,我是这样分析的… 下面是adapter类 下面是接口RetroInterface.class 这是我在主要活动中的称呼 下面是json响应

  • 改装建造者: 插件创建的数据类不对吗?或者我的服务不应该返回列表?我尝试过返回一个简单的BaseResponse对象,但这也不起作用。