簡體   English   中英

Android Volley JSON解析問題空檢查

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM