بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
نحوه چک کردن خالی یا پر بودن jsonObject یا JSONArray(حل شد)
میخوام زمانی که 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);
در کد بالا من دو شرط گذاشتم که جواب نمیده
لطفا کمک کنید.
0
0
اگه JSONObject خالی باشه (خالی با null فرق داره) با استفاده از همون شرط jsonObject.length == 0 میتونید نتیجه بگیرید... (9 سال پیش)
0
0
خب درسته . مشکل من همون نال بودنه که نمیدونم چجوری بهش بفهمونم که ناله و یه پیغام مناسب نشون بدم. (9 سال پیش)
0
0
اول با PostMan یک نمونه از JSON ای که باهاش مشکل داری را بگیر ... اینجا قرار بده که ببینیم مشکلت چیه ؟
(9 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
mosafer
9 سال پیش
0
0
ببینید زمانی که 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": "به صندوق"
}
]
}
پاسخ به سوال
AhmadVB
9 سال پیش
+1
0
آرایه ی شما در واقع الان توی 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++){
...
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .