JSON 値の解析中に問題が発生しました。以下の JSON ファイルを見つけてください。
{
"Account": "xxx",
"Account_desc": "xxx",
"TimeZone": "GMT+05:30",
"DeviceList": [
{
"Device": "xttt",
"Device_desc": "txtx",
"EventData": [
{
"Device": "xttt",
"Timestamp": 1373539125,
"Timestamp_date": "2013/07/11",
"Timestamp_time": "16:08:45",
"StatusCode": 61715,
"StatusCode_hex": "0xF113",
"StatusCode_desc": "Stop",
"GPSPoint": "12.97887,77.51030",
"GPSPoint_lat": 12.97887,
"GPSPoint_lon": 77.51030,
"Speed": 0.0,
"Speed_units": "km/h",
"Odometer": 3.416,
"Odometer_units": "Km",
"Geozone": "zone4",
"Geozone_index": 0,
"Address": "cxcxc",
"DigitalInputMask": 251,
"DigitalInputMask_hex": "0xFB",
"Index": 0
}
]
},
{
"Device": "pppp",
"Device_desc": "statstr",
"EventData": [
{
"Device": "pppp",
"Timestamp": 1368870217,
"Timestamp_date": "2013/05/18",
"Timestamp_time": "15:13:37",
"StatusCode": 61715,
"StatusCode_hex": "0xF113",
"StatusCode_desc": "Stop",
"GPSPoint": "14.26281,80.11421",
"GPSPoint_lat": 14.26281,
"GPSPoint_lon": 80.11421,
"Speed": 0.0,
"Speed_units": "km/h",
"Odometer": 373.874,
"Odometer_units": "Km",
"Geozone": "port",
"Geozone_index": 0,
"Address": "asdfsdfss",
"Index": 0
}
]
}
]
}
上記の JSON から、" EventData " に "GPSPoint_lat"、"GPSPoint_lon"、"Device" のみを含めたいので、次のようにコーディングしました。
JSONObject jsonObject = ApplicationContext.getHttpService()
.readAsJson(s);
// System.out.println("indexvalue:"+s.indexOf(1,5));
// JSONObject object = jsonObject.getJSONObject("DeviceList");
JSONArray jsonArray = jsonObject.getJSONArray("DeviceList");
JSONObject object = jsonArray.getJSONObject(0);
JSONArray secondarray = object.getJSONArray("EventData");
for (int i = 0; i < secondarray.length(); i++) {
try {
System.out.println("Im...");
// System.out.println("Latitude:"+ ((JSONObject)
// jsonArray.get(i)).getString("GPSPoint_lat"));
// String id = ((JSONObject)
// jsonArray.get(i)).getString("deviceID");
// arr = (JSONArray) jsonArray.get(i);
JSONObject obj = secondarray.getJSONObject(i);
String lat = obj.getString("GPSPoint_lat");
String lon = obj.getString("GPSPoint_lon");
........//..
...///......}}
しかし、上記のコードの問題は、実行するたびに arraylength が 1 になることです。つまり、最初の Eventdata 値を意味する 1 つの値しか取得しません。これで必要なのは、すべての「Eventdata」値を取得したいということです。これについて私に提案してください。
よろしくプリヤ