我有一个json解析代码的问题它显示错误json没有konteks lokasi的值,这是使用TAG_KONTEKS变量。 这是我获取json响应的代码。
@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
//mendapatkan data dari database berupa alamat, konteks, latitude, longitude
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("lat", Integer.toString(latPengguna)));
params.add(new BasicNameValuePair("lng", Integer.toString(lngPengguna)));
params.add(new BasicNameValuePair("konteks", konteksCocok));
Log.d("lat dan lng kirim", "data: " + Integer.toString(latPengguna) + " " + Integer.toString(lngPengguna));
Log.d("konteks kirim", "data: " + konteksCocok);
JSONObject json = jParser.makeHttpRequest(url_webservice, "POST", params);
Log.d("data: ", json.toString());
//menampilkan data lokasi POI
try {
int sukses = json.getInt(TAG_SUCCESS);
if(sukses == 1) {
POI = json.getJSONArray(TAG_POIN);
for(int i = 0; i < POI.length(); i++) {
JSONObject c = POI.getJSONObject(i);
int latDB = c.getInt(TAG_LAT);
int lngDB = c.getInt(TAG_LNG);
String alamat = c.getString(TAG_ALAMAT);
String konteks = c.getString(TAG_KONTEKS);
Log.d("latDB", "data: " + latDB);
Log.d("lngDB", "data: " + lngDB);
Log.d("altDB", "data: " + alamat);
Log.d("ktsDB", "data: " + konteks);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ALAMAT, alamat);
map.put(TAG_KONTEKS, konteks);
POIList.add(map);
}
} else {
Log.d("JSON error", "JSON trouble");
}
} catch(JSONException ex) {
ex.printStackTrace();
}
return null;
}
这是我的json回复:
{
"success": 1,
"point": [
{
"point": {
"konteks_lokasi": "kuliah",
"nama_lokasi": "Teknik Perkapalan",
"longitude": "-60",
"latitude": "117"
},
"hasil": 15.811388300842
},
{
"point": {
"konteks_lokasi": "kuliah",
"nama_lokasi": "Teknik Kimia",
"longitude": "-80",
"latitude": "145"
},
"hasil": 33.376638536557
},
{
"point": {
"konteks_lokasi": "kuliah",
"nama_lokasi": "Teknik Arsitektur",
"longitude": "-22",
"latitude": "111"
},
"hasil": 53.009433122794
}
]
}
如果你能帮助我,我会很高兴...
答案 0 :(得分:1)
经度和纬度是字符串,因为它们被引号括起来。所以你应该用getString()
来获取它们像这样解析它们
你的JSONArray包含另一个json数组,所以像这样解析它
int sukses = json.getInt(TAG_SUCCESS);
if(sukses == 1) {
POI = json.getJSONArray(TAG_POIN);
for(int i = 0; i < POI .length(); i++) {
JSONObject c = POI .getJSONObject(i);
JSONObject d = c.getJSONObject(0);
String latDB = d.getString(TAG_LAT);
String lngDB = d.getString(TAG_LNG);
String alamat = d.getString(TAG_ALAMAT);
String konteks = d.getString(TAG_KONTEKS);
}