بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

نحوه چک کردن خالی یا پر بودن jsonObject یا JSONArray(حل شد)

مدیریت گفتگو
mosafer 10 سال پیش
آخرین تغییر: 9 سال پیش

میخوام زمانی که jsonObject  خالی باشه پیغامی رو نشون بدم.

 StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                Log.d("yes", response.toString());

                try {

                    G.maghalatDaneshpazirs.clear();

                    JSONObject json = new JSONObject(response);
                    JSONArray jr = json.getJSONArray("Table1");
                   
                    for (int i = 0; i < jr.length(); i++) {

                        jsonObject = jr.getJSONObject(i);

                        if (jsonObject.length() == 0) {

                            Toast.makeText(ActivityMaghalatDaneneshpazir.this, "null jsonObject", 3000).show();
                            Log.d("null", "null jsonObject");

                        }

 
                       if (jsonObject == null) {
                            
                            Log.d("tArtTitle", "null tArtTitle");
                        }
 
MaghalatDaneshpazir task = new MaghalatDaneshpazir(tag_json_obj, tag_json_obj, tag_json_obj, tag_json_obj, tag_json_obj, tag_json_obj, tag_json_obj, tag_json_obj); task.tArttitr = jsonObject.getString("tArtTitle"); task.TArtText = jsonObject.getString("tArtText"); task.TName = jsonObject.getString("tName"); task.tArtId = jsonObject.getString("tArtId"); task.TArtCatName = jsonObject.getString("tArtCatName"); task.TArtPic = jsonObject.getString("tArtPic"); task.CName = jsonObject.getString("cName"); task.RegDate = jsonObject.getString("RegDate"); G.maghalatDaneshpazirs.add(task); } adapter = new CustomListAdapterMaghalatDaneshpazir(ActivityMaghalatDaneneshpazir.this, G.maghalatDaneshpazirs); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d("Error: " + error.getMessage()); pDialog.hide(); } }) { Map<String, String> params = new HashMap<String, String>(); @Override protected Map<String, String> getParams() { params.put("id", "20"); params.put("CId", CId); return params; } @Override public Map<String, String> getHeaders() throws AuthFailureError { params.put("id", "20"); params.put("CId", CId); return params; } }; RequestQueue queue = Volley.newRequestQueue(ActivityMaghalatDaneneshpazir.this); queue.add(request);
 

 

در کد بالا من دو شرط گذاشتم که جواب نمیده

 

لطفا کمک کنید.

نظرات

مسعود فرمانی 10 سال پیش
اگه JSONObject خالی باشه (خالی با null فرق داره) با استفاده از همون شرط jsonObject.length == 0 میتونید نتیجه بگیرید...
mosafer 10 سال پیش
خب درسته . مشکل من همون نال بودنه که نمیدونم چجوری بهش بفهمونم که ناله و یه پیغام مناسب نشون بدم.
AhmadVB 10 سال پیش
اول با PostMan یک نمونه از JSON ای که باهاش مشکل داری را بگیر ... اینجا قرار بده که ببینیم مشکلت چیه ؟

پاسخ‌ها 2

mosafer 10 سال پیش

ببینید زمانی که Json من null باشه با این شکل هست : 


{ "Table1": [] }
 

و زمانی که پر باشه به این شکل : 

 {
"Table1": [
{
"hId": 3030,
"hDarft": 0,
"hdisc": "تکمیل شهریه برای دوره akhavan/001",
"hGroh": "غیره",
"hShamsi": "1395/06/17",
"hPard": 1400000,
"hto": "به صندوق"
},
{
"hId": 3024,
"hDarft": 0,
"hdisc": " کاهش مبلغ کیف پول سحر علیزاده",
"hGroh": "غیره",
"hShamsi": "1395/06/17",
"hPard": 0,
"hto": "از کیف پول دانش پذیر"
},
{
"hId": 3022,
"hDarft": 0,
"hdisc": "",
"hGroh": "غیره",
"hShamsi": "1395/06/17",
"hPard": 400000,
"hto": "به تخفیف"
},
{
"hId": 3020,
"hDarft": 0,
"hdisc": " ثبت نام  akhavan/001",
"hGroh": "غیره",
"hShamsi": "1395/06/17",
"hPard": 0,
"hto": "به صندوق"
},
{
"hId": 616,
"hDarft": 0,
"hdisc": "تکمیل شهریه  hesabamaliati/001",
"hGroh": "غیره",
"hShamsi": "1394/10/22",
"hPard": 1000000,
"hto": "به صندوق"
},
{
"hId": 515,
"hDarft": 0,
"hdisc": "وصول قسط شماره 2",
"hGroh": "درآمد",
"hShamsi": "1394/10/17",
"hPard": 1000000,
"hto": " به صندوق"
},
{
"hId": 513,
"hDarft": 0,
"hdisc": "وصول قسط شماره 1",
"hGroh": "درآمد",
"hShamsi": "1394/10/17",
"hPard": 1000000,
"hto": " به صندوق"
},
{
"hId": 273,
"hDarft": 0,
"hdisc": "دریافت نقدی از علیزاده سحر به صندوق بابت ",
"hGroh": "درآمد",
"hShamsi": "1394/09/26",
"hPard": 2000000,
"hto": " به صندوق"
},
{
"hId": 272,
"hDarft": 0,
"hdisc": " تخفیف بابت  حذف 4جلسه",
"hGroh": "غیره",
"hShamsi": "1394/09/26",
"hPard": 800000,
"hto": "به تخفیف"
},
{
"hId": 228,
"hDarft": 0,
"hdisc": "تکمیل شهریه  hesabamaliati/001",
"hGroh": "غیره",
"hShamsi": "1394/09/26",
"hPard": 500000,
"hto": "به صندوق"
},
{
"hId": 210,
"hDarft": 0,
"hdisc": " ثبت نام  سحر علیزاده    فرزند  : حیدر",
"hGroh": "غیره",
"hShamsi": "1394/09/26",
"hPard": 0,
"hto": "به صندوق"
}
]
}
 

 

 

نظرات

mosafer 10 سال پیش
خیلی بد امده ...شرمنده
mosafer 10 سال پیش
خیلی بد امده ...شرمنده
AhmadVB 10 سال پیش
لطفا وقتی یک متن دارای فرمت نامناسب را کپی می کنید اول کپی کنید داخل notepad بعد دوباره از notepad کپی کنید توی این سایت.
AhmadVB 10 سال پیش

آرایه ی شما در واقع الان توی jr هست:

JSONArray jr = json.getJSONArray("Table1");
 
 

که شرط داخل for را این گذاشته اید :

for (int i = 0; i < jr.length(); i++) {
..
{
 
 

یعنی اگر table خالی بود jr.Length معادل صفر است  پس اصلا وارد آن نمی شود !!! که البته این شرط شما هم درست است.پس اگر می خواهید چیزی را چک کنید باید قبل از for چک کنید نه داخل for

if (jr.Length()==0) {
Log.d("...", "...");
}
...
for (int i =0; i < jr.length(); i++){
...
}
 

نظرات

mosafer 10 سال پیش
آقا احمد ممنونم درست شد..از اینکه با حوصله جواب دادین ممنونم
خواست خدایی 9 سال پیش
احمد آقای عزیز اگر اون تیبل رو نداشته باشیم باید چیکار کنیم من یه جیسون Array دارم که اون تیبل رو نداره اولش یعنی داخل اون نیست. و حالا می خوام از یک استرینگ ریکوست بگیرمش ولی نمیدونم شرطش باید چی باشه

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .