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> 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> J'ai essayé de faire de la même manière que pour le vent et le vent: donc j'ai essayé de ne pas convertir JSON à la carte Rath ER Utilisez directement une carte comme carte WeatherMap = JSontomap (respmap .igrez ("météo"). Tostring ()); Code> .Mais j'ai eu des erreurs: p>
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);
3 Réponses :
Comme ces données sont fournies sous forme de liste code> CODE> et que vous essayez de le convertir dans la carte code>. Ce n'est pas correct. Vous devez l'obtenir ( Météo strong>) comme une liste la jeter à la liste. Strong> p> espère que cela aide cela aide. P> P>
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); } } }
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 code> 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.
au lieu d'écrire tout à partir du début, vous pouvez utiliser: p>
https://github.com/xsavikx/openweathermap-java-api p>
Je pense que cet exemple est le plus proche de ce que vous essayez de faire: P>
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