美文网首页Android开发程序员半栈工程师
还在手动写Bean?赶紧来用GsonFormat吧

还在手动写Bean?赶紧来用GsonFormat吧

作者: 饱醉豚我去年买了个表 | 来源:发表于2017-12-10 16:33 被阅读250次

    在Android开发中避免不了和Server端的童鞋打交道,请求接口以后Server端一般返回的都是一个Json串信息,我们拿到Json串然后通过JsonObject或者JsonArray转换成我们需要的Bean,项目中我们一般使用Google的Gson或者阿里的FastJson去处理Json串,他们都是通过反射将Json串转换成Bean,那么我们需要做的就是根据返回的Json串去写对应的Bean类,比如Server给我们传回来的Json串是这样滴:

    {
        "Category": [
            {
                "categoryId": 1,
                "categoryName": "饮品",
                "categoryImage": "/upload/yinpin.jpg"
            },
            {
                "categoryId": 2,
                "categoryName": "食品",
                "categoryImage": "/upload/shiping.jpg"
            },
            {
                "categoryId": 3,
                "categoryName": "酒类",
                "categoryImage": "/upload/jiullei.jpg"
            }
        ],
        "recommend": {
            "id": 11,
            "productName": "统一老坛泡椒牛肉袋面香辣味110g*24袋",
            "filenameSmall": "/upload/ty_ltpj_small.jpg",
            "productPrice": 48,
            "productCost": 47.5
        }
    }
    

    我们需要根据上面的Json串来写出对应的Bean类,看得出上面的字段还是不少的,所以把所有的字段都写出来还是有一定的工作量的,而且手工写容易出错,一旦字段不对应,可能会导致整个解析过程出错,这时候GsonFormat迫不及待地跳出来:用我,用我!

    GsonFormat是一个Android Studio中的插件,它可以大大提高我们生成Bean类时的速度,下面就来看一下用GsonFormat来生成Bean的过程。

    1、首先去Android Studio的设置中找到Plugins界面,如下图:


    F57E9A3E-7D08-480B-95CF-E7A01B1EC404.png

    2、在输入框中搜索GsonFormat,点击Browse repositories...,就到了下面这个界面:


    625E3203-FD47-4793-A5D2-F12AA21067AA.png

    3、点击install安装并重启一下AS,就可以使用这个插件了,在Bean类的空白处点击,选择Generate...,如下图:


    C093E0D7-ECC1-4FB3-8DE8-BD53C5856858.png

    4、在输入框中输入Server端返回的Json串,点击OK:


    7E894051-4BE3-4F81-9DF7-C7B9A9527276.png

    5、因为示例中的Json串会产生两个内部类,GsonFormat已经给我们推荐了内部类的名字,我们继续点OK按钮就可以了:


    DCC0CF2C-A480-4B60-AA11-748460B49D6F.png

    最后看一下生成结果:

    public class noodleBean {
    
        /**
         * Category : [{"categoryId":1,"categoryName":"饮品","categoryImage":"/upload/yinpin.jpg"},{"categoryId":2,"categoryName":"食品","categoryImage":"/upload/shiping.jpg"},{"categoryId":3,"categoryName":"酒类","categoryImage":"/upload/jiullei.jpg"}]
         * recommend : {"id":11,"productName":"统一老坛泡椒牛肉袋面香辣味110g*24袋","filenameSmall":"/upload/ty_ltpj_small.jpg","productPrice":48,"productCost":47.5}
         */
    
        private RecommendBean recommend;
        private List<CategoryBean> Category;
    
        public RecommendBean getRecommend() {
            return recommend;
        }
    
        public void setRecommend(RecommendBean recommend) {
            this.recommend = recommend;
        }
    
        public List<CategoryBean> getCategory() {
            return Category;
        }
    
        public void setCategory(List<CategoryBean> Category) {
            this.Category = Category;
        }
    
        public static class RecommendBean {
            /**
             * id : 11
             * productName : 统一老坛泡椒牛肉袋面香辣味110g*24袋
             * filenameSmall : /upload/ty_ltpj_small.jpg
             * productPrice : 48
             * productCost : 47.5
             */
    
            private int id;
            private String productName;
            private String filenameSmall;
            private int productPrice;
            private double productCost;
    
            public int getId() {
                return id;
            }
    
            public void setId(int id) {
                this.id = id;
            }
    
            public String getProductName() {
                return productName;
            }
    
            public void setProductName(String productName) {
                this.productName = productName;
            }
    
            public String getFilenameSmall() {
                return filenameSmall;
            }
    
            public void setFilenameSmall(String filenameSmall) {
                this.filenameSmall = filenameSmall;
            }
    
            public int getProductPrice() {
                return productPrice;
            }
    
            public void setProductPrice(int productPrice) {
                this.productPrice = productPrice;
            }
    
            public double getProductCost() {
                return productCost;
            }
    
            public void setProductCost(double productCost) {
                this.productCost = productCost;
            }
        }
    
        public static class CategoryBean {
            /**
             * categoryId : 1
             * categoryName : 饮品
             * categoryImage : /upload/yinpin.jpg
             */
    
            private int categoryId;
            private String categoryName;
            private String categoryImage;
    
            public int getCategoryId() {
                return categoryId;
            }
    
            public void setCategoryId(int categoryId) {
                this.categoryId = categoryId;
            }
    
            public String getCategoryName() {
                return categoryName;
            }
    
            public void setCategoryName(String categoryName) {
                this.categoryName = categoryName;
            }
    
            public String getCategoryImage() {
                return categoryImage;
            }
    
            public void setCategoryImage(String categoryImage) {
                this.categoryImage = categoryImage;
            }
        }
    }
    

    怎么样?比我们手写快多了吧,而且不会出错,不过我们在使用GsonFormat时要确保我们输入的Json串信息是正确的,否则生成的Bean类就是错误的,所以当我们拿到Server端返回的Json信息后,最好和接口文档做个对比(如果有接口文档),如果不一致提前修改,确保我们的Json信息是正确的。
    好了,就到这里吧,不想手写Bean类的小伙伴们赶紧用起来吧!

    相关文章

      网友评论

        本文标题:还在手动写Bean?赶紧来用GsonFormat吧

        本文链接:https://www.haomeiwen.com/subject/kphvixtx.html