从JSON获取温度

时间:2016-09-30 21:38:37

标签: java android json

我正在构建一个Android应用,我想要读取我所在城市的当前温度。我正在使用http://openweathermap.org/current免费API。

现在,当我尝试通过执行以下操作来获取温度时:

if (device.isConnected()) {
    if(isConnected){
       iMachineSpeedTemp++
    }else{
       sMachineSpeedTemp = device.logic().readVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb"));
       iMachineSpeedTemp = Integer.parseInt(sMachineSpeedTemp);
       iMachineSpeedTemp++;
       isConnected = true;
   }   
   device.logic().writeVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb", sMachineSpeedTemp);
   sMachineSpeedTemp = iMachineSpeedTemp.toString();
   mAlertDialog.setMessage("" + sMachineSpeedTemp);
 }

“desc”或描述按预期获取,购买温度的提取说:

  

W / System.err:org.json.JSONException:没有为main的值   W / System.err:at org.json.JSONObject.get(JSONObject.java:389)   W / System.err:at org.json.JSONObject.getJSONObject(JSONObject.java:609)

以下是我收到的JSON片段,注意“lon”:xxx,“lat”:xxx是故意的:

@Override
    public void onResponse(JSONObject response) {

        try {

            Log.d("MY LOGGER: ", "Task started");

            //Fetch description
            JSONArray measurements = response.getJSONArray("list");
            String desc = measurements.getJSONObject(0).getJSONArray("weather").getJSONObject(0).getString("description");

            //Fetch temp
            JSONObject currentTemp = response.getJSONObject("main");
            double temp = currentTemp.getDouble("temp");
            .
            .

我在取材时做错了什么?

2 个答案:

答案 0 :(得分:1)

以下是错误。

JSONObject currentTemp = response.getJSONObject(“main”);

main不在顶层,你提取的方式是错误的。

答案 1 :(得分:1)

<强>已更新

尝试以这种方式抓取它。

       JSONArray measurements = response.getJSONArray("list");
                 //description                
                String desc = measurements.getJSONObject(0).getJSONArray("weather").getJSONObject(0).getString("description");
                //temperature
                double temp = measurements.getJSONObject(0).getJSONObject("main").getDouble("temp");