درود بر همه کاربران و اساتید محترم
به درخواست بعضی از دوستان نحوه کار با کتابخانه جیسون رو براتون آماده کردم امید وارم گامی در پر بار کردن مطالب انجمن برداشته باشم
برگ سبزیست تحفه درویش و پیشکش برای زحمات دوستان و خسته نباشید به مدیریت برای قالب جدید.
سعی می کنم از اول شروع کنم:
JSON چیست؟
JSON مخفف کلمات JavaScript Object Notation می باشد
JSON فرمتی سبک وزن برای مبادله داده های متنی می باشد
JSON مستقل از زبان می باشد *
JSON بصورت "خود تشریح" و برای درک آسان می باشد
یکی از پر کاربرد ترین استفاده JSON واکشی داده های JSON از سرویس دهنده وب (به عنوان یک فایل یا درخواست Html).
برای اطلاعات بیشتر می تونید به آدرس زیر یه سری بزنید
معرفي جيسان، JSON
و برای اطلاعات بیشتر در مورد کتابخانه جیسون به سایت زیر مراجعه کنید
JSON
حال با ذکر یک مثال می ریم سراغ b4a.
فرض کنید ما یک فایل جیسون داریم به صورت زیر:
{ "basic4android.org":[
{ "id": "1", "name": "mehdi", "family": "izadi","city": "city_1" } ,
{ "id": "2", "name": "nima","family": "ghobadi", "city": "city_2" } ,
{ "id": "3", "name": "majid", "family": "arta","city": "city_3" } ,
{ "id": "4", "name": "mostafa", "family": "haghighi","city": "city_4" } ,
{ "id": "5", "name": "farzad","family": "mosavi", "city": "city_5" } ,
{ "id": "6", "name": "armin","family": "ramezani", "city": "city_6" } ,
{ "id": "7", "name": "mehdi","family": "alavi", "city": "city_7" } ,
{ "id": "8", "name": "mehdi","family": "rostami", "city": "city_8" } ,
{ "id": "9", "name": "ahmad","family": "samadyar", "city": "city_9" } ,
{ "id": "10", "name": "pejman","family": "nikravan", "city": "city_10" }
]}
با مراجعه به سایت زیر می توانیم آبجیکت ها و آرایه های فایل جیسون بالا را مشاهده کنیم
string of JSON text
وارد سایت شده و در تکست باکس متن جیسون خود رو وارد می کنیم و بر روی دکمه json 2 html کلیک می کنیم
همانطور که مشاهده می کنید یک جدول با مشخصات فایل جیسون ما ساخته و آبجکت و آرایه ها و value نشان داده می شود
توضیحات بالا عرض شد تا با json بیشتر آشنا بشید حالا می ریم سراغ کد نویسی
مثل تمام پروژه ها سیو کردن و بقیه عمل ها که خودتون استادید
1-referenced library
بعد می ریم سراغ ارجاع به کتابخانه یا referenced library که برای استفاده از کتابخانه json نیاز به زدن تیک این کتابخانه داریم یعنی تیک کتابخانه json v 1.10 را می زنیم
1-1-add file یا اظافه کردن پوشه
در این مرحله ما یک فایل txt که حاوی فایل json ماست رو به برنامه اظافه می کنیم
که این فایل حاوی اطلاعات json ماست یعنی یک فایل txt درست کرده و محتوای json رو داخل آن ریخته و با پسوند .txt ذخیره و به برنامه اظافه می کنیم
2-تعریف متغیر ها
ما نیاز به یک متغیراز نوع json داریم برای این کار در داخل Sub Globals متغیر را تعریف می کنیم و یک lable یک listview و یک spinner که به شکل زیر تعریف می کنیم
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim json As JSONParser
Private Label1 As Label
Private ListView1 As ListView
Private Spinner1 As Spinner
End Sub
3-Initialize یا مقداردهی اولیه
همان طور که می دونید برای دسترسی بهتر و شناساندن متغیر به برنامه ما می یایم از مقداردهی اولیه یا Initialize کردن استفاده می کنیم به شکل زیر
json.Initialize(File.ReadString(File.DirAssets,"test.txt"))
دستور بالا می یاد در داخل متغیر json ما محتوای string فایل test.txt از File.DirAssets که یک دسترسی فقط خواندنیست می ریزه
4-نسبت دادن فایل json به یک متغیر map
سپس یک متغیر map تعریف می کنیم تا محتوای آبجیکت های json رو داخل آن ذخیره کنیم
Dim m As Map
نکته:
اگر در جدولی که سایت string of JSON text به ما داده توجه کنید ما یک آبجیکت داریم به نام basic4android.org که از 10 آرایه تشکیل شده است
حالا ما می یایم آبجیکت رو به متغیر map نسبت می دیم و سپس چون این آبجکت از لیستی از آرایه ها تشکیل شده یک متغیر از نوع لیست هم تعریف می کنیم و به آرایه های آبجکتمون نسبت می دیم این طوری ما سعی می کنیم به تمام value ها دسترسی داشته باشیم. مثل کد زیر:
m=json.NextObject
Dim bas As List
bas=m.Get("basic4android.org")
با دستور m=json.NextObject ما اولین آبجکت فایل جیسونمون رو می خونیم و داخل متغیر m می ریزیم
و با دستور bas=m.Get("basic4android.org") ما آرایه های object اولمون که با اندیس basic4android.org مشخص شده رو داخل متغیر bas می ریزیم
5-پیمایش در آرایه
همانظور که می دونید بیشتر اوقات هرجا اسم از آرایه می یاد ما برای پیمایش در آرایه از یک حلقه استفاده می کنیم
آرایه
حالا ما نیاز به یک حلقه for داریم که از 0 شروع بشه و تا انتهای آریه ساخته شدمون بره
بخاطر همین از دستور زیر استفاده می کنیم
For i=0 To bas.Size-1
next
در دستور بالا ما یه حلقه ایجاد کردیم که از 0 شروع می شه و تا انتهای آرایه bas می ره
چون هر عضو آرایه ی ما هم خودش از چند مقدارتشکیل شده دوباره می یایم هر کودوم از آرایه مون رو به متغیر map نسبت می دیم تا بتونیم به value هاش دسترسی پیدا کنیم برای این کار از دستور زیر استفاده می کنیم:
For i=0 To bas.Size-1
m=bas.Get(i)
next
ما حالا کامل می تونیم به همه فایل جیسونمون دسترسی داشته باشیم و از طیق اندیس های آرایه به داده های اصلی و مقدار های نهایی دسترسی داشته باشیم
حالا می یایم از طریق اندیس های آرایه که اگر یادتون باشه با id,name,family,city مشخص شده بودند به مقدار هاشون دسترسی پیدا می کنیم مثلا در کد زیر اولین آرایه ما هست:
{ "id": "1", "name": "mehdi", "family": "izadi","city": "city_1" }
اندیس id مقدارش برابر با 1 است و name برابر با mehdi و family برابر با izadi و الی آخر
6-مقدار دهی به Spinner1 و ListView1
که دیگه این مقدار دهی هم کاملا مشخص است و حلقه for ما هم کامل می شه
For i=0 To bas.Size-1
m=bas.Get(i)
Spinner1.Add(m.Get("id"))
ListView1.AddTwoLines(m.Get("name"), m.Get("family"))
Next
در آخر هم کل پروژه به صورت زیر در می یاد:
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim json As JSONParser
Private Label1 As Label
Private ListView1 As ListView
Private Spinner1 As Spinner
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Layout1")
json.Initialize(File.ReadString(File.DirAssets,"test.txt"))
Dim m As Map
m=json.NextObject
Dim bas As List
bas=m.Get("basic4android.org")
For i=0 To bas.Size-1
m=bas.Get(i)
Spinner1.Add(m.Get("id"))
ListView1.AddTwoLines(m.Get("name"), m.Get("family"))
Next
End Sub
ممنون از همه عزیزان
آموزش بعدی برای کار با json online اگر برسم می زارم
شرمنده اگر یه کم گنگه فعلا تازه کارم اما خودمو سعی می کنم برسونم
json.rar
lib.rar