Openweathermap API Forecast для доступа к массиву - PullRequest
0 голосов
/ 25 апреля 2018

Так что я пытаюсь возиться с API openweathermap и не могу понять, как получить доступ к некоторым данным.

Вот фрагмент кода, который у меня есть, чтобы получить доступ к API.

    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:

{
"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" возвращать все под ним.

Спасибо за любую помощь.

Макс

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Я наконец понял это.Код ниже!

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

Это вернет небольшой дождь из кода API выше.

0 голосов
/ 25 апреля 2018

Не уверен насчет 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...