[英]Android Volley JSON parsing issue Null checking
我在解析JSON對象時遇到問題,每個對象中都有22個元素,我想對所有元素進行空檢查。 我試圖尋找一種解決方案,但是到處都是解決方案,一個接一個地檢查每個解決方案。 有什么方法可以檢查我的JSON對象中的任何元素是否為Null,這是一個非常漫長的過程,需要分別對22個元素中的每個元素執行此操作。 以下是我的JSON響應的代碼。
public void onResponse(JSONArray response) {
Log.i("response data", response.toString());
final ArrayList<DataPOJO> list = new ArrayList<>();
try {
JSONArray jArray = response;
Log.i("jArray data", jArray.toString());
for (int i = 0; i < jArray.length(); i++){
JSONObject singleItem = jArray.getJSONObject(i);
DataPOJO data = new DataPOJO();
data.zipcode = singleItem.getInt("zipcode");
data.latitude = singleItem.getDouble("latitude");
data.longitude = singleItem.getDouble("longitude");
data.year = singleItem.getInt("year");
data.make = singleItem.getString("make");
data.model = singleItem.getString("model");
data.transmission = singleItem.getString("transmission");
data.odometer = singleItem.getDouble("odometer");
data.style = singleItem.getString("style");
data.carDescription = singleItem.getString("carDes");
data.advanceNotice = singleItem.getString("advNotice");
data.trim = singleItem.getString("trim");
//data.image = singleItem.getString("carPic");
//data.licenseNumber = singleItem.getString("licenseNo");
//data.issuingCountry = singleItem.getString("issuingCountry");
//data.issuingState = singleItem.getString("issuingState");
//data.licensePlateNumber = singleItem.getString("licensePlateNum");
//data.licenseState = singleItem.getString("licenseState");
//data.lName = singleItem.getString("lNameOnLic");
//data.fName = singleItem.getString("fNameOnLic");
data.minimumDuration = singleItem.getString("shortPT");
data.longestDistance = singleItem.getString("longPT");
list.add(data);
}
} catch (JSONException e) {
Log.e("JSONException: ", e.getMessage());
e.printStackTrace();
}
Log.i("Array list data:",list.toString());
ListView lst = (ListView) findViewById(R.id.car_list);
ListViewAdapter adapter = new ListViewAdapter(list,getApplicationContext());
lst.setAdapter(adapter);
lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent carChoiceIntent = new Intent(getApplicationContext(), CarChoice.class);
carChoiceIntent.putExtra("DataPOJO object", new Gson().toJson(list.get(position)));
startActivity(carChoiceIntent);
}
});
如您所見,我要解析的列表很長,而Null單獨檢查所有列表的效率很低,這也增加了代碼的長度。 如果有人可以幫助我,那就太好了。 我正在使用android Volley庫與服務器通信。
您可以使用JSONObject#opt...
方法。
例:
JSONObject singleItem = jArray.getJSONObject(i);
DataPOJO data = new DataPOJO();
data.zipcode = singleItem.optInt("zipcode", 12345);
在這種情況下,如果“郵政編碼”所映射的值為空,則12345
將作為后備。
如果不手動進行操作,我無法提出一種在JsonObject上檢查空值的方法,但是我可以建議您使用Gson進行解析,因為它可以解決您所困擾的問題以及更多其他問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.