【问题标题】:Openweathermap API Forecast accessing arrayOpenweathermap API Forecast 访问数组
【发布时间】:2018-10-05 08:00:54
【问题描述】:

所以我试图弄乱 openweathermap API,但我不知道如何访问某些数据。

这里是我可以访问 API 的代码的 sn-p。

    public void find_forecast () {

    String url = "http://api.openweathermap.org/data/2.5/forecast?id=4466033&appid=e4c641dd837c7947a127972091185dad&units=imperial";

    JsonObjectRequest jor = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONArray array = response.getJSONArray("list");
                JSONObject object = array.getJSONObject(1);

                String description = object.getString("dt");
                day1.setText(description);

这里是 API 代码的 sn-p:

{
"cod": "200",
"message": 0.0042,
"cnt": 40,
"list": [
    {
        "dt": 1524614400,
        "main": {
            "temp": 63.77,
            "temp_min": 63.77,
            "temp_max": 64.26,
            "pressure": 1017.45,
            "sea_level": 1021.4,
            "grnd_level": 1017.45,
            "humidity": 97,
            "temp_kf": -0.27
        },
        "weather": [
            {
                "id": 500,
                "main": "Rain",
                "description": "light rain",
                "icon": "10n"
            }
        ],

如您所见,上面的代码将返回 dt 的值,即 1524614400。但我试图访问例如在“天气”下的“描述”,在这种情况下是小雨。我想我不知道如何访问数组中的数组,尽管我什至无法让“temp”返回“main”下,尽管我可以让“main”返回它下面的所有内容。

感谢您的帮助。

最大

【问题讨论】:

    标签: arrays android-studio openweathermap


    【解决方案1】:

    不确定Android,但在Javascript中我会试试这个:

    var dataObj = {
    "cod": "200",
    "message": 0.0042,
    "cnt": 40,
    "list": [
        {
            "dt": 1524614400,
            "main": {
                "temp": 63.77,
                "temp_min": 63.77,
                "temp_max": 64.26,
                "pressure": 1017.45,
                "sea_level": 1021.4,
                "grnd_level": 1017.45,
                "humidity": 97,
                "temp_kf": -0.27
            },
            "weather": [
                {
                    "id": 500,
                    "main": "Rain",
                    "description": "light rain",
                    "icon": "10n"
                }
            ]
          }
          ]
      }
    
      console.log(dataObj.list[0].weather[0].description);
    

    【讨论】:

      【解决方案2】:

      我终于想通了。代码如下!

      String array = response.getJSONArray("list").getJSONObject(0).getJSONArray("weather").getJSONObject(0).getString("description");
                      day1.setText(array);
      

      这将从上面的 API 代码返回小雨。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-06
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 2015-01-04
        • 2016-03-31
        相关资源
        最近更新 更多