[英]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.