读取java

时间:2015-12-18 17:49:45

标签: java android json parsing

首先,我是programming的新人。我必须为学校项目创建一个Android天气应用程序,而我却被这个大屁股JSON困住了:

JSON Data

除此之外,我如何读取每3小时间隔的温度(例如:9.00-12.00温度:5°C,12.00-15.00温度:7°C等)。 所以我有一个Activity,它以一个三小时的间隔显示整天的温度。由于我没有使用JSON的经验,我不知道某些索引是什么意思,什么时候增加(有8个主要的东西)。

免责声明:我必须使用JSON,没有GSON或其他快捷方式,我必须解析并读取此JSON中的某些数据。我从开放的天气图API获取此JSON,因此它每天都在变化。 API

3 个答案:

答案 0 :(得分:0)

使用volly库。您可以轻松地从json获取数据。如果您使用的是volly库,则不需要异步任务。

答案 1 :(得分:0)

  1. 首先转到http://jsonlint.com/验证json。这将帮助您查看格式化的Json字符串。

  2. 接下来阅读Json数组和Object。

  3. 使用AsynTask将Json转换为forecastJsonStr字符串。

  4. 然后你需要将这个forecastJsonStr转换为JSon对象forecastJsonObj

  5. 获取"列表"中的天气数据做类似

    的事情
    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对象。

上面是一个非常简单的示例,可以帮助您了解正在发生的事情。因此,请尝试从中提取更多数据。

所有最好的和快乐的编码:)