0
votes

Analyser le fichier OpenWeatherMap JSON

Je travaille sur un projet, qui nécessite d'obtenir des informations météo et j'ai donc utilisé OpenWeatherMap API. Mon programme a travaillé et j'ai reçu des informations de "Main" et "Wind", mais j'ai aussi besoin d'obtenir une description de l'ensemble météo principal.Le problème est que l'ensemble météo est une liste dans le fichier JSON et je suis incapable de le jeter Pour mapser. Le fichier JSON exemple que j'essaie d'analyser est http: // api.openweathermap.org/data/2.5/weather?q=london

JSON: p> xxx pré>

Lorsque nous examinons le fichier, nous remarquons qu'il y a de remarque est un [] support à l'intérieur du temps météo qui crée des problèmes dans mon projet.J'ai essayé de rechercher la possibilité de lancer la liste et essayé de jouer avec mon code, mais n'a pas aidé. Le code commenté dans le fichier est des choses Ce que j'ai essayé tout en essayant de le faire fonctionner. p> xxx pré>

J'ai essayé de faire de la même manière que pour le vent et le vent: carte WeatherMap = JSontomap (respmap .igrez ("météo"). Tostring ()); Code> .Mais j'ai eu des erreurs: p> xxx pré>

donc j'ai essayé de ne pas convertir JSON à la carte Rath ER Utilisez directement une carte comme mapper Weathermap = (carte) respmap.get ("Météo"); Code> Mais j'ai P>

              List<Map<String,String>> weatherMap = new Gson().fromJson(respMap.get("weather").toString(),listType);


2 commentaires

API.OPENWEATHERMAP.ORG/DATA/2.5/Weather?q=london Besoin de la clé API. mieux attacher JSON dans cette question.


@ruhul Oh.Sorry et merci d'avoir fait mon message plus sympathique. Le code a déjà une clé d'API de travail de 16 chiffres


3 Réponses :


1
votes

Comme ces données sont fournies sous forme de liste et que vous essayez de le convertir dans la carte . Ce n'est pas correct. Vous devez l'obtenir ( Météo ) comme une liste de carte , puis de traiter chaque élément comme carte . Voici un exemple de comment l'obtenir comme une carte xxx

la jeter à la liste. xxx < / Pre>

Traitez chaque élément en tant que carte: xxx

espère que cela aide cela aide.


0 commentaires

0
votes

Faites de la vie simple et utilisez de vrais types.

import java.util.List;

import com.google.gson.Gson;

public class PlantWateringApp {

    class Weather_2_5 {
        List<Weather> weather;
    }

    class Weather {
        Integer id;
        String main;
        String description;
        String icon;
    }

    public static void main(String[] args) {

        String result = "{\"coord\":{\"lon\":77.22,\"lat\":28.65},\"weather\":[{\"id\":711,\"main\":\"Smoke\",\"description\":\"smoke\",\"icon\":\"50d\"}],\"base\":\"stations\",\"main\":{\"temp\":72.32,\"pressure\":1015,\"humidity\":59,\"temp_min\":64.4,\"temp_max\":77},\"visibility\":1000,\"wind\":{\"speed\":3.36,\"deg\":270},\"clouds\":{\"all\":0},\"dt\":1573351180,\"sys\":{\"type\":1,\"id\":9165,\"country\":\"IN\",\"sunrise\":1573348168,\"sunset\":1573387234},\"timezone\":19800,\"id\":1273294,\"name\":\"Delhi\",\"cod\":200}";
        //System.out.println(result);

        Gson G = new Gson();
        Weather_2_5 obj = G.fromJson(result, Weather_2_5.class);

        for (int idx = 0; idx < obj.weather.size(); idx++) {
            System.out.println(obj.weather.get(idx).description);
        }
    }
}


2 commentaires

Je pense que vous ne comprenez pas. J'utilise l'API météo pour obtenir la météo en temps réel de n'importe quel emplacement.Votre programme imprime simplement les éléments du fichier JSON.


Je pense que vous avez mal lu la sortie. Il y a 2 lignes de sortie. 1) La ligne de débogage [que je viens de commenter] et 2) le résultat de obj.weather.get (IDX) .description qui imprime simplement "fumée". Vous / pouvez / traiter le graphique JSON en tant que carte, mais vous vous donnez plus de travail avec des types et des casse et encore plus lorsque le schéma change. Voir Mkyong.com/java/how-to-parse- JSON-With-gson Section 4, pour un exemple.