خانه » لایبرری های مفید و تجربیات شخصی خیلی مفید !!! » خواندن و نوشتن Json با لایبرری Gson

خواندن و نوشتن Json با لایبرری Gson

در اکثر پروژه های تحت نت معمولا نیاز داریم تا یک فایل 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/

برچسب ها:
پست قبلی
پست بعدی

درباره ایلیا عابدینی

برنامه نویس اندروید و کارشناس مهندسی پزشکی، نفر سوم مسابقه برنامه نویسی اندروید http://www.schallenge.ir ، از سال 92 برنامه نویسی اندروید رو شروع کردم و در حال حاضر در شرکت عصر دانش در حال توسعه اپلیکیشن تجارت پی می باشدم ، این وبلاگ رو ساختم تا تجربیات روزانه و مفید خودم رو داخل اون بزارم. رزومه : iact.ir/cv

3 دیدگاه

  1. سلام

    اگر میشه یه آموزش کامل بزارید که بشه همینو بشه وصل کرد به دیتابیس وردپرس یا غیره.

    و اگه میشه بگید چطوری میشه همینارو روی ویجت قرار داد

    ممنون
     

  2. آقا دمت گرم خیلی عالی بود!

    لیب خیلی خوبیه!

  3. سلام مرسی از اموزش های خوبتون

    ببخشید من یه سوال داشتم

    myJsonString

    جیه کجا تعریف شده

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا