我正在构建一个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");
.
.
我在取材时做错了什么?
答案 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");