سلام و درود جناب شاه پیری عزیز
من از هاست مقادیر جی سان های مختلفی رو میگیرم و به مدلها و سبک های مختلفی داده ها توست جی سون ها و آرایه ها و .. میرسه به برنامه و با کتابخونه شما انالیز میشه
داده هایی که من میگیرم بعضا یک خط کد جی سون ساده هست مثل زیر
مقدار رسیده JsonString ==> {"message":"داده های کاربر به روز شد","return":"successful"}
و گاهی هم به صورت آرایه جیسون هست به این شکل
مقدار رسیده JsonString ==> {"message":[{"city_country_key":"21","city_key":"2396","city_name_farsi":"بنونتو","id":"63","user_name":"بلواستکس","number_respond":"0","date_added":"2017-08-14 20:22:30","respond":"","report":"0","city_name_en":"Benevento","user_id":"1","question":"fgyhh","question_id":"0","user_image":"user_icon_1"},{"city_country_key":"21","city_key":"2390","city_name_farsi":"آنکونا","id":"62","user_name":"تبلتسبزه","number_respond":"0","date_added":"2017-08-12 11:22:41","respond":"","report":"1","city_name_en":"Ancona","user_id":"2","question":"سلام خوبی چه خبر من خوبم سربازی رفتی","question_id":"0","user_image":"user_icon_2"},{"city_country_key":"21","city_key":"2390","city_name_farsi":"آنکونا","id":"54","user_name":"بلواستکس","number_respond":"2","date_added":"2017-08-11 14:59:37","respond":"","report":"0","city_name_en":"Ancona","user_id":"1","question":"ggggg","question_id":"0","user_image":"user_icon_1"},{"city_country_key":"21","city_key":"2417","city_name_farsi":"سالینی","id":"50","user_name":"تبلتسبزه","number_respond":"0","date_added":"2017-08-11 13:43:53","respond":"","report":"0","city_name_en":"Aosta","user_id":"2","question":"سلام در سالینی ... هست","question_id":"0","user_image":"user_icon_2"},{"city_country_key":"21","city_key":"2390","city_name_farsi":"آنکونا","id":"48","user_name":"بلواستکس","number_respond":"2","date_added":"2017-08-11 13:26:42","respond":"","report":"1","city_name_en":"Ancona","user_id":"1","question":"سلام به همه عزیزان دکتر دندان پزشک میشناسید در آنکونا؟","question_id":"0","user_image":"user_icon_1"}],"return":"successful","rowcont":"5"}
خوب
می بینیم که پارامتر message به 2 صورت ممکنه به اپلیکیشن یا برنامه ما برسه
و من میام در ساب مربوط به کتابخونه سعی میکنم اونها رو تمیز بدم ( تشخیص بدم که آرایه رسیده، یا یه متن ساده!)
ولی نمیتونم این کار رو انجام بدم
و مجبور شدم از try کش استفاده کنم که منطقی نیست
Sub persianfastnetwork_onPostJSONObjectOkListener(JsonString As String , Tag As String)
Log("♥♥♥♥♥♥♥♥ persianfastnetwork_onPostJSONObjectOkListener ♥♥♥♥♥♥♥♥♥♥♥♥")
'این ها همه توضیحات اضافه هست
Log("------------------------------------------")
Log(" پاسخ مربوط به "&" case="&Tag&" رسید به برنامه ")
Log("مقدار رسیده JsonString ==> "&JsonString)
Log("------------------------------------------")
'-------------------------------------------------------------------------------
'--------------------مقدار دهی به داده های رسیده---------------------------------
'-------------------------------------------------------------------------------
Dim prjs As PersianJSONOBject
prjs.initialaizJsonString(JsonString)
'-------------------------------------------------------------------------------
Dim Return1 As String=prjs.getString("return")
Log("Return1 ===> "& Return1)
'-------------------------------------------------------------------------------
Dim rowcont As String =prjs.getString("rowcont")
Log("تعداد رکورد هایی که دریافت شده rowcont ===> "& rowcont)
Try
چون احتمال داره هیچی نرسه یا یک متن ساده باشه و جی سون نباشه و یا آرایه
مجبورین جلوی خطا رو بگیریم
Dim message As PersianJSONArray=prjs.getJsonArray("message")
Log ("محتویات رکورد ها message==> "&message)
Log ("message.size==> "&message.size)
' For i=0 To message.size-1
' Dim PersianJSONOBject_1 As PersianJSONOBject
' PersianJSONOBject_1=message.getJsonObject(i)
' ' Log ("داده شماره "& i &" ==> "&PersianJSONOBject_1)
' Log ("داده شماره city_name_farsi "& i &" ==> "&PersianJSONOBject_1.getString("city_name_farsi"))
' Next
Catch
Log (" مقداری برای مسیج نرسیده یا آرایه نیست است")
Log(LastException)
End Try
'-------------------------------------------------------------------------------
'انتخاب تگ رسیده
Select Tag
سوالم اینه که
در کتابخونه شما
آیا روشی هست که مثلا اگر مقدار رسیده message اصلا وجود نداشت در جی سان
یا خالی بود و
یا یک آرایه بود
متوجه بشیم و بگیم
اگر جیسون رسیده شامل کلید مسیج هست آنگاه
اگر مسیج آرایه هست آنگاه چاپ کن مسیج رسیده یک آرایه هست و تعداد سایز رو نشون بده
در غیر اینصورت مقدار کلید مسیج رو که رسیده نشون بده
در غیر اینصورت چاپ کن کلیدی به اسم مسیج وجود ندارد
با شرمندگی زیاد جناب شاهپیری
امید وارم با علم کم و اطلاعات محدودم تونسته باشم منظورم رو رسونده باشم به شما
پیشاپیش سپاسگذارم