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

使用Reformation2解析API时获取null

谢建业
2023-03-14

直接在我的浏览器中输入时(appId已删除)

http://api.openweathermap.org/data/2.5/weather?q=37421

我得到了这个预期的回应

{“coord”:{“lon”:73,“lat”:31.32},“weather”:[{“id”:800,“main”:“Clear”,“description”:“clear sky”,“icon”:“01n”}],“base”:“stations”,“main”:{“temp”:286.471,“pressure”:1007.05,“humidity”:86,“temp_min”:286.471,“temp_max”:286.47 1,“sea_level”:1028.03,“grnd_level”:1007.05},“wind”:{“speed”:3.01,“deg”:252.003},“clouds”:{“all”:0},“dt”:1516458282,“sys”:{“message”:0.0035,“country”:“PK”,“sunrise”:1516413964,“sunset”:1516451547},“id”:1179400,“名称”:“Chak 247 RB Miani”,“鳕鱼”:200}

我只想得到纬度和纬度坐标。

这是我的模型

html" target="_blank">html" target="_blank">public class CoordObject {
    private String lat;
    private String lon;

    public CoordObject(
            String lat,
            String lon({
        this.lat =lat;
        this.lon =lon;
    }

    public String getLat(){
        return lat;
    }
    public String getLon(){
        return lon;
    }
}

还有我的界面

public interface OwmInterface {

@GET("/data/2.5/weather")
Call<CoordObject> getCoord(@Query("q") String zipCode,
                           @Query("appid") String appId);
}

和我的活动

 final String BASE_URL = "https://api.openweathermap.org/";
    final String API_KEY_OWM = "xxxx";

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    OwmInterface request = retrofit.create(OwmInterface.class);

    Call<CoordObject> call = request.getCoord(
            "37421",
            API_KEY_OWM
    );

    call.enqueue(new Callback<CoordObject>() {
        @Override
        public void onResponse(Call<CoordObject> call, Response<CoordObject> response){
            CoordObject coordObjectResponse = response.body();
            Toast.makeText(MainActivity.this, coordObjectResponse.getLat(), Toast.LENGTH_LONG).show();
            Toast.makeText(MainActivity.this, coordObjectResponse.getLon(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<CoordObject> call, Throwable t) {
                Toast.makeText(MainActivity.this, "failed" +t, Toast.LENGTH_SHORT).show();
            }
    });

我得到回应,但祝酒词显示为空。

共有1个答案

席俊
2023-03-14

有一个作为根的对象包含您的< code>CoordObject。< br >您应该再创建一个类:

public class RootObject {

    private CoordObject coord;

    public RootObject(CoordObject coord){
        this.coord = coord
    }

    public CoordObject getCoordinates(){
        return coord;
    }
}

现在您的接口应该返回一个<code>RootObject<code>:

@GET("/data/2.5/weather")
Call<RootObject> getCoord(@Query("q") String zipCode,
                           @Query("appid") String appId);

同时检查latlon是否来自类型double,而不是String

 类似资料:
  • 我正在尝试使用Jackson解析JSON,这是我的类 还有跑步者 setName方法正在工作,但在客户中得到null。getName()。我不想用莫西

  • 我的目标是用一个给定的字符串,比如“艺人名称-歌曲名称”,来获得专辑及其封面图像。为此,我使用SpotifyWebAPI,我想这类请求不需要OAuth。 如果您单击下面的链接,您可以获得JSON,但是这个请求会返回一个错误页面。我也尝试过Ajax,但没有任何改变。有人能帮我吗?

  • 我已经使用Django和Django rest框架设置了一个APIendpoint,以使用POST请求提交表单。当使用PostMan发送请求时,后端工作正常,并将数据添加到数据库中。但是,当我使用fetch时,后端返回。前端是一个react网页包设置。 这是我用来发出请求的代码: 下面是的打印: 我还使用wireshark捕获PostMan和获取请求。这是邮递员的请求,成功的响应: 然而,这是带有

  • 我正在尝试使用Android studio和Java构建一个简单的天气预报应用程序。我在这里遵循了一些指示(https://www.androdocs.com/java/creating-an-android-weather-app-using-java.html)要启动并运行,这是可行的。然而,我只能得到当前的天气。Openweather预测API调用似乎持续了5天。没关系,但如何获得用户指定的

  • 问题内容: 我正在用SAX解析XML文件,有时需要元素的内部XML。例如,对于以下XML 我需要获取元素 a 的内部XML ,这将是 最简单的方法是什么? 谢谢。 伊万 问题答案: 对于这种情况,我建议使用2个内容处理程序。第一个负责查找文档的相关部分,第二个负责处理内容。我对类似问题的答案(请参见下面的链接)演示了如何实现此方法: 使用SAX解析常见的XML元素

  • 我正在使用Java读取Salesforce环境中的所有对象,工作正常,但下面的代码需要10分钟才能将JSON转换为Java ArrayList。我在考虑是否可以使用Java-8流API来并行解析逻辑。以下是我的工作代码,如有任何建议,不胜感激。