خیلی بد امده ...شرمنده
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
نحوه چک کردن خالی یا پر بودن jsonObject یا JSONArray(حل شد)
مدیریت گفتگو
آخرین تغییر: 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);
در کد بالا من دو شرط گذاشتم که جواب نمیده
لطفا کمک کنید.
پاسخها 2
ببینید زمانی که 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": "به صندوق"
}
]
}
نظرات
آرایه ی شما در واقع الان توی 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++){
...
}
نظرات
آقا احمد ممنونم درست شد..از اینکه با حوصله جواب دادین ممنونم
احمد آقای عزیز اگر اون تیبل رو نداشته باشیم باید چیکار کنیم
من یه جیسون Array دارم که اون تیبل رو نداره اولش
یعنی داخل اون نیست.
و حالا می خوام از یک استرینگ ریکوست بگیرمش ولی نمیدونم شرطش باید چی باشه
سلام دوباره
مشکلم حل شد ممنون
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات