根據Gson庫使用的要求,將JSONObject格式的String 解析成實體

jopen 9年前發布 | 10K 次閱讀 Gson Android開發 移動開發

寫在前頭:本插件只適用 android studio和 Intellij IDEA 工具,eclipse 的少年無視我吧!!!

這是一個根據JSONObject格式的字符串,自動生成實體類參數.

github

jetbrains

版本1.1.3

1.1.3 版本更新內容: 1. 內部類使用 static 修飾;

  • 生成屬性的時候會過濾父類的屬性;
  • 支持修改實體類的后綴名,保持跟項目命名規則的統一;
  • 支持自動生成轉換方法;
  • 支持轉換方法的修改;
  • 支持是否復用內部實體類,默認不啟用;
  • 支持轉換異常的異常信息查看;

版本1.1.2

1.1.2 版本更新內容

  1. 修復了開啟對話框會閃一下的 bug;
  2. 增加了設置界面;
  3. 增加了使用Public 修飾成員變量,替代 private 和 set/get 方法.默認為 private ,可以手動切換過來;
  4. 支持全部變量用注解(SerializedName)的形式.可以用在混淆的時候.

版本1.1.1

1.1.1版本更新內容

  1. 修復了因為過濾//注釋代碼導致的出現的 Json 格式驗證異常;
  2. 支持解析 java 的關鍵字作為 key (支持字段: default,abstract,null,final,void,implements, this,instanceof,native,new,goto,const,volatile,return,finally)其余暫不支持;

版本1.1.0

1.1.0 版本更新內容:

  1. 支持數組中嵌套數組的解析;
  2. 支持過濾Json格式中的注釋代碼.

#Usage# 安裝方法1:

1.Android studio  File->Settings..->Plugins-->Browse repositores..搜索GsonFormat

2.安裝插件,重啟android studio

安裝方法2:

1.下載GsonFormat.jar ;
     2.Android studio  File->Settings..->Plugins -->
 install plugin from disk..導入下載的GsonFormat.jar 
     3重啟android studio

使用方式

在實體類中使用Generate的快捷鍵.

快捷鍵:圖中選中的部分 72350A47-A21A-4505-817E-2CA8092F7B7D.png 我這邊的快捷鍵是 command+n;

簡單的實體類:

簡單的.gif 圖中簡單的 json 格式

{
    "name": "王五",
    "gender": "man",
    "age": 15,
    "height": "140cm",
}

圖中的實體類

**
 * Created by 輕微 on 15/1/9.
 */
public class Bean  extends JSONModel {


    /**
     * height : 140cm
     * age : 15
     * name : 王五
     * gender : man
     */
    private String height;
    private int age;
    private String name;
    private String gender;

    public void setHeight(String height) {
        this.height = height;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getHeight() {
        return height;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }
}
復雜的實體類:

實體類不僅包含另外一個實體,還包含另外實體的數組. 復雜.gif 圖中復雜的json 格式

{
    "name": "王五",
    "gender": "man",
    "age": 15,
    "height": "140cm",
    "addr": {
        "province": "fujian",
        "city": "quanzhou",
        "code": "300000"
    },
    "hobby": [
        {
            "name": "billiards",
            "code": "1"
        },
        {
            "name": "computerGame",
            "code": "2"
        }
    ]
}

圖中的實體類

/**
 * Created by 輕微 on 15/1/9.
 */
public class Bean  extends JSONModel {


    /**
     * height : 140cm
     * age : 15
     * name : 王五
     * hobby : [{"name":"billiards","code":"1"},{"name":"computerGame","code":"2"}]
     * gender : man
     * addr : {"province":"fujian","code":"300000","city":"quanzhou"}
     */
    private String height;
    private int age;
    private String name;
    private List<HobbyEntity> hobby;
    private String gender;
    private AddrEntity addr;

    public void setHeight(String height) {
        this.height = height;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setHobby(List<HobbyEntity> hobby) {
        this.hobby = hobby;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setAddr(AddrEntity addr) {
        this.addr = addr;
    }

    public String getHeight() {
        return height;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public List<HobbyEntity> getHobby() {
        return hobby;
    }

    public String getGender() {
        return gender;
    }

    public AddrEntity getAddr() {
        return addr;
    }

    public class HobbyEntity {
        /**
         * name : billiards
         * code : 1
         */
        private String name;
        private String code;

        public void setName(String name) {
            this.name = name;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getName() {
            return name;
        }

        public String getCode() {
            return code;
        }
    }

    public class AddrEntity {
        /**
         * province : fujian
         * code : 300000
         * city : quanzhou
         */
        private String province;
        private String code;
        private String city;

        public void setProvince(String province) {
            this.province = province;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getProvince() {
            return province;
        }

        public String getCode() {
            return code;
        }

        public String getCity() {
            return city;
        }
    }
}

1.1.1的過濾注釋功能講解: 支持 java 兩種注釋過濾:

/**段注釋:
 */

//行注釋:

例子:

{
    /**
    * 名字
    */
    "name": "王五",
    "gender": "man",//性別
    "age": 15,
    "height": "140cm",
}

這樣它也是可以解析的.

項目主頁:http://www.baiduhome.net/lib/view/home/1438864308426

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!