首先,我是programming
的新人。我必须为学校项目创建一个Android
天气应用程序,而我却被这个大屁股JSON
困住了:
除此之外,我如何读取每3小时间隔的温度(例如:9.00-12.00温度:5°C,12.00-15.00温度:7°C等)。
所以我有一个Activity
,它以一个三小时的间隔显示整天的温度。由于我没有使用JSON的经验,我不知道某些索引是什么意思,什么时候增加(有8个主要的东西)。
免责声明:我必须使用JSON,没有GSON或其他快捷方式,我必须解析并读取此JSON中的某些数据。我从开放的天气图API获取此JSON,因此它每天都在变化。 API
答案 0 :(得分:0)
使用volly库。您可以轻松地从json获取数据。如果您使用的是volly库,则不需要异步任务。
答案 1 :(得分:0)
首先转到http://jsonlint.com/验证json。这将帮助您查看格式化的Json字符串。
接下来阅读Json数组和Object。
使用AsynTask将Json转换为forecastJsonStr字符串。
然后你需要将这个forecastJsonStr转换为JSon对象forecastJsonObj
获取"列表"中的天气数据做类似
的事情JSONArray weatherArray = forecastJson.getJSONArray("list");
希望这有帮助
答案 2 :(得分:0)
JSONObject receivedData = new JSONObject("The string that you get as response from the API");
JSONArray weatherList = receivedData.getJSONArray("list");
for(int i=0;i<weatherList.length();i++){
JSONObject data = weatherList.getJSONObjectAt(i);
String date_text - data.getString("dt_txt");
JSONArray weatherData = weatherList.getJSONArray("main");
for(int j=0;j<weatherData.length();j++){
// Here is where you will get all the weather stuff that you need
int temp = weatherData.getInt("temp");
// Similarly other values like temp_min, temp_max
}
}
所以基本上你需要解析整个事情。为了更清楚地理解整个结构,可以使用类似http://jsonviewer.stack.hu/的内容,以更清晰的方式查看JSON,以便更好地了解JSON数据的内容。简单复制将数据粘贴到那里,然后单击“格式化”。
如果您看到存储类似“name”:“value”,则JSON只是一种名称 - 值对存储类型。整数值没有“”。
请记住,所有JSON都存储在{}中,而JSON可以嵌套在JSON中。所以在你的例子中,如果你看到,整个事情就是一个JSON。在其中你有一个“city”键,其值在{}之内。所以“city”是一个JSONObject。
类似地,“coord”是JSONObject,而“cod”是String,“cnt”是整数。
也可能存在一些名称指向JSON对象数组的实例,例如“list”。 JSON数组使用[]表示。其中包含以逗号分隔的JSON对象。
上面是一个非常简单的示例,可以帮助您了解正在发生的事情。因此,请尝试从中提取更多数据。
所有最好的和快乐的编码:)