さて、最初のハードルはほんの数分でクリアされました。これがどのように機能するか見てみましょう。
ログに表示されているように、コードはWebサイトからJSONデータを正常にプルしていますが、JSONParserが失敗しています。問題はJSONObjectとJSONArrayの違いだと思いますが、理解できません。
ログに表示されるJSONサイトから取得したデータは次のとおりです。
09-10 09:45:00.175: I/log_tag(785): {"stoker":{"sensors":[{"id":"620000116F01CA30","name":"SS2","al":0,"ta":66,"th":75,"tl":65,"tc":66.3,"blower":null},09-10 09:45:00.175: I/log_tag(785): {"id":"E20000116F0CDB30","name":"brskt2","al":0,"ta":203,"th":32,"tl":32,"tc":70.6,"blower":null}],09-10 09:45:00.175: I/log_tag(785): "blowers":[{"id":"37000000119D8B05","name":"party","on":0}]}}
そして、これがデータを解析しようとするコードです:
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Sensor resultRow = new Sensor();
resultRow.id = json_data.getString("id");
resultRow.name = json_data.getString("name");
resultRow.current = json_data.getString("tc");
resultRow.target = json_data.getString("ta");
arrayOfWebData.add(resultRow);
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
そして、失敗したときのログファイルのエントリは次のとおりです。
09-10 09:45:00.314: E/log_tag(785): Error parsing data org.json.JSONException: Value {"stoker":{"sensors":[{"id":"620000116F01CA30","al":0,"tl":65,"tc":66.3,"ta":66,"name":"SS2","blower":null,"th":75},{"id":"E20000116F0CDB30","al":0,"tl":32,"tc":70.6,"ta":203,"name":"brskt2","blower":null,"th":32}],"blowers":[{"id":"37000000119D8B05","on":0,"name":"party"}]}} of type org.json.JSONObject cannot be converted to JSONArray