tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            کتابخانه Gson | آموزش کتابخانه Gson برای تبدیل جیسون در اندروید

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • کتابخانه Gson | آموزش کتابخانه Gson برای تبدیل جیسون در اندروید
            آموزش رتروفیت Retrofit
            رتروفیت | آموزش Retrofit همراه با مثال
            31 اردیبهشت 1398
            عملیات CRUD با استفاده از Datatable و Ajax در لاراول 5.8
            عملیات CRUD با استفاده از Datatable و Ajax در لاراول 5.8
            4 خرداد 1398
            منتشر شده توسط مهندس داودی
            آموزش کتابخانه Gson برای تبدیل جیسون در اندروید

            آموزش کتابخانه Gson برای تبدیل جیسون در اندروید

            کتابخانه Gson یکی از دوست داشتنی ترین کتابخانه هاست که برای پروژه های اندروید مرتبط به سرور(تقریبا همه پروژه ها) بشدت لازمه چون با استفاده از Gson میتونیم خیلی راحت رشته جیسون دریافتی سرور رو به یک کلاس جاوا یا کاتلین و همچنین یک آرایه یا یک آبجکت رو به رشته جیسون تبدیل کنیم.

            آموزش کتابخانه Gson برای تبدیل جیسون در اندروید

            نکته مهم اینکه کتابخانه Gson مال خود Google هستش پس استفاده ازش خیلی لذت بخش تر خواهد بود ( یه غول تکنولوژی پشتشه 😀 )
            خب قبل از اینکه بریم ادامه آموزش بهتره dependency یا وابستگی کتابخانه Gson رو به پروژه اضافه کنیم

              implementation 'com.google.code.gson:gson:2.8.5'
            

            جیسون هم مثل اکثر کتابخونه های مشابه با استفاده از annotation ها این تبدیل رو انجام میده.

            همچنین بخوانید: آموزش Retrofit همراه با مثال

            تبدیل جیسون به Object

            کمی بیشتر درباره تبدیل جیسون به آبجکت با کتابخانه Gson توضیح بدیم 🙂
            برای تبدیل جیسون به یک کلاس خب مشخصا باید ابتدا یک کلاس جاوا یا کاتلین بسازیم که حاویه متغیرهایی برای نگهداریه داده های تبدیل شده توسط Gson خواهد بود که البته این تبدیل با کمک حاشیه نوشت ها یا annotation ها انجام خواهد شد که خود کتابخانه Gson در اختیار ما قرار خواهد داد.

            قطعا برای درک بیشتر نیاز به مثال خواهد بود پس بریم واسه مثال 😉
            تبدیل جیسون به آبجکت یا آرایه با استفاده از annotation زیر انجام میشه (درواقع کلیدی ترین annotation )

             @SerializedName
            

            که حاوی کلید جیسون خواهد بود.برای مثال اگر ما جیسون زیر رو از سرور بگیریم:

            {"res":"this is result"
             ,"value":[
               {"name":"ali","lname":"karimi"
               ,"age":"22","city":"tehran"},
              
                  {"name":"reza","lname":"karimi"
               ,"age":"22","city":"tehran"}
             ]
            }
            

            پس کلاسی که باید برای اون بسازیم بصورت زیر خواهد بود
            جاوا

            package dn.marjan.myprac;
            
            import com.google.gson.annotations.Expose;
            import com.google.gson.annotations.SerializedName;
            
            import java.util.List;
            
            public class test {
            
                @SerializedName("res")
                @Expose
                private String res;
                @SerializedName("value")
                @Expose
                private List<Value> value = null;
            
                public String getRes() {
                    return res;
                }
            
                public void setRes(String res) {
                    this.res = res;
                }
            
                public List<Value> getValue() {
                    return value;
                }
            
                public void setValue(List<Value> value) {
                    this.value = value;
                }
            
                public class Value {
            
                    @SerializedName("name") 
                    private String name;
                    @SerializedName("lname") 
                    private String lname;
                    @SerializedName("age") 
                    private String age;
                    @SerializedName("city") 
                    private String city;
            
                    public String getName() {
                        return name;
                    }
            
                    public void setName(String name) {
                        this.name = name;
                    }
            
                    public String getLname() {
                        return lname;
                    }
            
                    public void setLname(String lname) {
                        this.lname = lname;
                    }
            
                    public String getAge() {
                        return age;
                    }
            
                    public void setAge(String age) {
                        this.age = age;
                    }
            
                    public String getCity() {
                        return city;
                    }
            
                    public void setCity(String city) {
                        this.city = city;
                    }
            
                }
            }
            

            کاتلین

            class test {
            
                @SerializedName("res") 
                var res: String? = null
                @SerializedName("value") 
                var value: List<Value>? = null
            
                inner class Value {
            
                    @SerializedName("name") 
                    var name: String? = null
                    @SerializedName("lname") 
                    var lname: String? = null
                    @SerializedName("age") 
                    var age: String? = null
                    @SerializedName("city") 
                    var city: String? = null
            
                }
            }
            

            اینکه چطور قالب جیسون هارو به کلاس تبدیل کنم اصلا ترسناک نیست و ذهنتون سمت این نره که باید بشینید و دستی بنویسید فقط کافیه به سایت jsonschema2pojo.org یه سری بزنید و متن جیسونتون رو داخلش کپی کنید بعد تنظیماتی که میخواید رو انتخاب کنید و در نهایت دکمه Preview رو بزنید خواهید دید که کلاس جاواشو بهتون میده 🙂 اما بجز این کلاس پلاگین های مختلفی برای جاوا و کاتلینم هست:

            پلاگین تبدیل جیسون به کلاس کاتلین:

            Kotlin Jackson Generator

            پلاگین تبدیل جیسون به کلاس جاوا:

            Json2Java4Idea

            اگر هم بخواید میتونید این پلاگین هارو مستقیم از اندروید استودیو دانلود و نصب کنید فقط کافیه در اندروید استودیو به مسیر

            File/Setting/plugins

            برید و اسم پلاگین های بالا رو سرچ کنید و در نهایت هم install ، بعد از نصب اندروید استودیو پیشنهاد میده که خودشو ری استارت کنه که ترجیحا قبول کنید تا پلاگین بدرستی لود شه.

            خب میتونیم بگیم عمده ترین دستورات کتابخانه Gson شامل دو مورد زیر میباشد:

            toJson()
            

            برای تبدیل به جیسون و

            fromJson()
            

            برای تبدیل به آبجکت یا آرایه
            ما در ادامه دو متد رو بررسی خواهیم کرد که یکی برای تبدیل یک رشته جیسون به یک آبجکت از نوع یک کلاس مشخص و دیگری برای تبدیل یک رشته جیسون به یک آرایه است که به سادگی میتونید از این متدها در بخش های مختلف پروژتون استفاده کنید.
            خب بریم سراغ متدهای تبدیل جیسون با کتابخانه Gson

            متدهای تبدیل جیسون با کتابخانه Gson

            متد زیر یک رشته جیسون رو میگیره و اون رو تبدیل به یک آبجکت از نوع کلاس User میکنه (توجه کنید که کلاس
            User مثل توضیحات فوق با سایت jsonchema2pojo مطابق با نمونه جیسونی که میخوایم دریافت کنیم ساخته شده و دارای انوتیشن های SerializedName هستش)
            جاوا

             public User getUserJs(String value){
                    Gson gson = new Gson();
                    JsonReader reader = new JsonReader(new StringReader(value));
                    reader.setLenient(true);
                    User data = new User();
                    try{
                        data = gson.fromJson(value,User.class);
                    }catch (JsonSyntaxException e){
                        e.printStackTrace();
                    }
                    return data;
                }
            

            کاتلین

              fun getUserJs(value: String) :User{
                        val gson = Gson()
                        val reader = JsonReader(StringReader(value))
                        reader.isLenient = true
                        var data = User()
                        try {
                              data = gson.fromJson<User>(reader, User::class.java)
                        }catch (e: JsonSyntaxException){
                            e.printStackTrace()
                        }
            
                        return data
            
                    }
            

            اگر بخوایم کمی کد های فوق رو توضیح بدیم میتونیم اینطور بگیم که ابتدا یک آبجکت از نوع کلاس Gson ایجاد کردیم و همچنین یک آبجکت از JsonReader که میتونیم به وسیله این آبجکت یک سری پراپرتی زمان تبدیل اعمال کنیم که در این متد با Lenient رو فعال کردیم.این پراپرتی باعث میشه که از رشته ها ایراد نگیره و باعث کرش نشه.سپس با استفاده از fromJson ما مشخص کردیم که رشته جیسون باید درقالب چه کلاسی قرار بگیره (User)

            متد تبدیل جیسون به آرایه

            خب حالا متد بعدی که جیسون رو تبدیل به آرایه میکنه
            جاوا

             public List<User> getUserListJs(String value) {
                    Gson gson = new Gson();
                    Type listType = new TypeToken<List<User>>() {
                    }.getType();
                    List<User> data = gson.fromJson(value, listType);
                    return data;
                }
            

            کاتلین

            fun getDyDialogList(value: String) : List<DyDialog>{
                        val gson = Gson()
                        val listType = object : TypeToken<List<DyDialog>>() {}.type
                        var data = ArrayList<DyDialog>()
                        try {
                            data = gson.fromJson<List<DyDialog>>(value, listType) as ArrayList<DyDialog>
                        }catch (e: JsonSyntaxException){
                            e.printStackTrace()
                        }
                        return data
                    }
            

            متد تبدیل جیسون به آرایه هم تقریبا شبیه به متد قبل هستش با تفاوت reader که در این متد باید از کلاس TypeToken برای شناساندن کلاس مدنظر استفاده کنیم.

            همچنین بخوانید: کتابخانه Timber برای گرفتن لاگ بهتر در اندروید

            امیدوارم آموزش کتابخانه Gson برای تبدیل جیسون در اندروید به شما کمک کرده باشد.

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج