Я работаю над проектом, который требует получения информации о погоде, и поэтому я использовал API OpenWeatherMAP. Моя программа сработала, и я получил информацию от «Main» и «Wind», но мне также нужно получить описание из основного набора погоды. Проблема в том, что набор погоды является списком в файле JSON, и я не могу поднять его на карту. Пример JSON File, который я пытаюсь разобрать http://api.openweathermap.org/data/2.5/weather? /> json: < /p>
{
"coord":{
"lon":-0.13,
"lat":51.51
},
"weather":[
{
"id":803,
"main":"Clouds",
"description":"broken clouds",
"icon":"04n"
}
],
"base":"stations",
"main":{
"temp":43.56,
"pressure":1004,
"humidity":87,
"temp_min":41,
"temp_max":46.4
},
"visibility":10000,
"wind":{
"speed":11.41,
"deg":80
},
"rain":{
},
"clouds":{
"all":75
},
"dt":1573350303,
"sys":{
"type":1,
"id":1414,
"country":"GB",
"sunrise":1573369754,
"sunset":1573402780
},
"timezone":0,
"id":2643743,
"name":"London",
"cod":200
}
< /code>
Когда мы смотрим на файл, мы замечаем, что в наборе погоды есть [] кронштейн [], который создает проблемы в моем проекте. Я пытался посмотреть, как разыграть список, чтобы карта, и пытался играть с моим кодом, но не помог. Код прокомментированного в файле - это вещи, которые я пытался, пытаясь заставить его работать.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.*;
import com.google.gson.reflect.*;
import java.util.List;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class PlantWateringApp {
public static Map jsonToMap(String str) {
Map map = new Gson().fromJson(str, new TypeToken() {
}.getType());
return map;
}
public static void main(String[] args) {
String LOCATION = "delhi,india";
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);
Map respMap = jsonToMap(result.toString());
Map mainMap = jsonToMap(respMap.get("main").toString());
Map windMap = jsonToMap(respMap.get("wind").toString());
// Type listType = new TypeToken()
// {}.getType();
// List weatherMap = new
// Gson().fromJson(respMap.get("description").toString(),listType);
// Map name = (Map)
// respMap.get("description");
// Map weatherMap = jsonToMap
// (respMap.get("description").toString());
System.out.println("Location: " + LOCATION);
System.out.println("Current Temperature: " + mainMap.get("temp"));
System.out.println("Current Humidity: " + mainMap.get("humidity"));
System.out.println("Max: " + mainMap.get("temp_min"));
System.out.println("Min: " + mainMap.get("temp_max"));
System.out.println("Wind Speed: " + windMap.get("speed"));
System.out.println("Wind Angle: " + windMap.get("deg"));
}
}
< /code>
Я пытался сделать так же, как и для Main и Wind: map weathermap = jsontomap (respmap.get ("погода"). toString ()); < /code>. Но я получает ошибки: < /p>
////java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3 path $[0]
< /code>
Поэтому я пытался не преобразовать JSON в карту, скорее, используйте карту, например, map weathermap = (map) respmap.get ("погода"); < /code> Но я получил < /p>
////java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
< /code>
Для этого я попытался отменить список для карты, используя < /p>
List weatherMap = new Gson().fromJson(respMap.get("weather").toString(),listType);
< /code>
Но это написано: < /p>
//String cannot be converted to int
Я действительно запутался в том, что делать в этой ситуации. Я не могу понять, как иметь дело с [] в файле JSON.
Я работаю над проектом, который требует получения информации о погоде, и поэтому я использовал API OpenWeatherMAP. Моя программа сработала, и я получил информацию от «Main» и «Wind», но мне также нужно получить описание из основного набора погоды. Проблема в том, что набор погоды является списком в файле JSON, и я не могу поднять его на карту. Пример JSON File, который я пытаюсь разобрать http://api.openweathermap.org/data/2.5/weather? /> json: < /p>
Когда мы смотрим на файл, мы замечаем, что в наборе погоды есть [] кронштейн [], который создает проблемы в моем проекте. Я пытался посмотреть, как разыграть список, чтобы карта, и пытался играть с моим кодом, но не помог. Код прокомментированного в файле - это вещи, которые я пытался, пытаясь заставить его работать.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.Map;
Я пытался сделать так же, как и для Main и Wind: map weathermap = jsontomap (respmap.get ("погода"). toString ()); < /code>. Но я получает ошибки: < /p>
////java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3 path $[0] < /code>
Поэтому я пытался не преобразовать JSON в карту, скорее, используйте карту, например, map weathermap = (map) respmap.get ("погода"); < /code> Но я получил < /p>
////java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map < /code>
Для этого я попытался отменить список для карты, используя < /p>
List weatherMap = new Gson().fromJson(respMap.get("weather").toString(),listType); < /code>
Но это написано: < /p>
//String cannot be converted to int[/code]
Я действительно запутался в том, что делать в этой ситуации. Я не могу понять, как иметь дело с [] в файле JSON.
Я новичок в разработке для Android и создаю приложение погоды в студии Android с использованием Java.
Я хочу использовать API от openweathermap.org, чтобы получать информацию о погоде с использованием точек широты и долготы. Я сгенерировал ключ API,...
Я пытаюсь ввести и город, и штат или код штата из оператора ввода, но каждый раз, когда я это делаю, получаю ошибку 404. Я хочу иметь возможность вводить код города и штата или штата во входной оператор (например, Филадельфия, Пенсильвания или...
Я разрабатываю приложение для Android, и мне нужна текущая погода и ее низкая/высокая температура для города, в котором я нахожусь. Есть ли способ получить текущую максимальную и низкую температуру для города, в котором я нахожусь?