در اکثر پروژه های تحت نت معمولا نیاز داریم تا یک فایل Json را دریافت کرده و اطلاعات را از آن بخوانیم (به اصطلاح parse کنیم )
یکی از بهترین لایبرری ها برای پارس کردن و حتی ساختن فایل های Json لایبرری Gson می باشد.
نحوه کار کردن با اون خیلی سادس و خیلی به سرعت کار کردن شما کمک می کنه.
بزارید یک مثال بزنم (این مثال در صفحه ویکی پدیا Gson می باشد http://en.wikipedia.org/wiki/Gson )
فرض کنید فایل json زیر را دریافت کرده اید :
{ "name": "John", "surname": "Doe", "cars": [ { "manufacturer": "Audi", "model": "A4", "capacity": 1.8, "accident": false }, { "manufacturer": "Škoda", "model": "Octavia", "capacity": 2, "accident": true } ], "phone": 245987453 }
این json 4 فیلد به نام های name , surname , cars , phone دارد که داخل cars یک لیست وجود دارد که خود آن لیست هم از ۴ فیلد به نام manufacturer , model , capacity , accident ساخته شده.
حالا من کلاسی می نویسم که شبیه فایل بالایی باشد :
public class MyJsonResponse { public String name; public String surname; public List<CARS> cars; public String phone; public class CARS{ public String manufacturer; public String model; public int capacity; public boolean accident; } }
من این رو به صورت ۲ کلاس تو در تو نوشتم که فرقی نمی کنه شما میتونید ۲ کلاس خارج از یکدیگر بسازید.
نکته ای که خیلی مهم هست اینه که اسم فیلد ها باید با فیلد هایی که json می دهد یکی باشد.
خوب حالا تنها کاری که لازمه من بکنم اینه که به صورت زیر از لایبرری Gson استفاده کنم :
Gson gson = new Gson(); MyJsonResponse myParsedJson= gson.fromJson(myJsonString, MyJsonResponse.class);
به همین سادگی
myJsonString در اینجا همان فایل Json اولی هست که از نت دریافت کرده بودم ، MyJsonResponse کلاسی هست که نطیر فایل json ساخته بودم.
و حالا myParsedJson کلاسی هست که تمام فیلد هاش با فایل json پر شده
حالا مثلا اگه فیلد name رو بخواهم کافیه به صورت زیر ازش اسفتاده کنم :
myParsedJson.name
یا اگه مدل اولین ماشین رو بخواهم :
myParsedJson.cars.get(0).model
اینجا چون ماشین ها یک لیست را برمی گردانند پس ما هم باید به صورت لیست با آن برخورد کنیم.
نکته اینکه اگه اسم فیلدی مطابقت نداشته باشه چیزی توی اون فیلد پر نمیشه و موقع استفاده کردن خالی است پس به نام فیلد ها دقت کنید
در آینده کار با لایبرری Retrofit رو توضیح میدم !!!
ویرایش :
یک سایت خوب که از روی Json یک آبجکت میسازه و میتونه تو سریع درست کردن آبجکت مدل ها کمک کنه :
http://www.jsonschema2pojo.org/
سلام
اگر میشه یه آموزش کامل بزارید که بشه همینو بشه وصل کرد به دیتابیس وردپرس یا غیره.
و اگه میشه بگید چطوری میشه همینارو روی ویجت قرار داد
ممنون
آقا دمت گرم خیلی عالی بود!
لیب خیلی خوبیه!
سلام مرسی از اموزش های خوبتون
ببخشید من یه سوال داشتم
myJsonString
جیه کجا تعریف شده
سلام ممنون واس اموزشتون
اگر میشه یه اموزش کامل و یک مثال توی سایتتون بزارید