使用Gson解析復雜、變態的Json數據(包含中文key)


接口文檔:

app配置
接口 client/init

請求數據
json={"uid":"","sid":"","ver":"1",
    "request":{}
}

返回數據
{"ret":0,
    "response":{
        "tag_category":{
            "中國畫":{
                "年代":["先秦兩漢","戰國楚國","魏晉南北","隋唐五代","南宋北宋","元代","明清","近現代","年代不詳","其他"],
                "技法":["潑墨","工筆","寫意","白描","寫生","皴法","沒骨","指頭畫","其他"],
                ...
            },
            "書法":{
                "分類":["書法","碑帖","寫本寫經","書札文牘","其他"],
                "書體":["篆書","隸書","楷書","草書","行書","其他"],
                ...
            },
            ...
        }
    }
}
備注 tag_category 標簽分類

首先自然想到封裝成JavaBean。

注意點:

1、內部嵌套的類必須是static的,要不然解析會出錯;

2、類里面的屬性名必須跟Json字段里面的Key一模一樣;

3、因為Json字段里面的Key存在中文,所以必須在相應的字段上使用@SerializedName("中國畫")注解,給Key取別名。

4、內部嵌套用{}嵌套的就定義為 public ChinaPicture chinaPicture,用[]括起來的部分是一個List,所以定義為 public List<String> years。

5、如果不想寫get和set方法,只需要將字段定義成public。

public class JsonBean {
    public int ret;
    public Response response;

    public static class Response {
        public TagCategory tag_category;
        
        public static class TagCategory {
            
            @SerializedName("中國畫")
            public ChinaPicture chinaPicture;
            /**
             * 中國畫
             */
            public static class ChinaPicture {
                @SerializedName("年代")
                public List<String> years;
                @SerializedName("技法")
                public List<String> techniques;
                @SerializedName("題材")
                public List<String> topic;
                @SerializedName("規格")
                public List<String> specification;
            }
            
            @SerializedName("書法")
            public Calligraphy calligraphy;
            /**
             * 書法
             */
            public static class Calligraphy {
                @SerializedName("分類")
                public List<String> classification;
                @SerializedName("書體")
                public List<String> chirography;
                @SerializedName("規格")
                public List<String> specification;
            }
            
            @SerializedName("西方繪畫")
            public WesternPicture westernPicture;
            /**
             * 西方繪畫
             */
            public static class WesternPicture {
                @SerializedName("技法")
                public List<String> techniques;
                @SerializedName("題材")
                public List<String> topic;
            }
            
            @SerializedName("郵品")
            public Stamps stamps;
            /**
             * 郵品
             */
            public static class Stamps {
                @SerializedName("分類")
                public List<String> classification;
                @SerializedName("規格")
                public List<String> specification;
            }
            
            @SerializedName("錢幣")
            public Money money;
            /**
             * 錢幣
             */
            public static class Money {
                @SerializedName("分類")
                public List<String> classification;
                @SerializedName("國家")
                public List<String> country;
                @SerializedName("規格")
                public List<String> specification;
            }
            
            @SerializedName("瓷器")
            public China china;
            /**
             * 瓷器
             */
            public static class China {
                @SerializedName("年代")
                public List<String> years;
                @SerializedName("分類")
                public List<String> classification;
            }
            
            @SerializedName("紫砂壺")
            public Teapot teapot;
            /**
             * 紫砂壺
             */
            public static class Teapot {
                @SerializedName("規格")
                public List<String> specification;
                @SerializedName("泥料")
                public List<String> pug;
                @SerializedName("工藝")
                public List<String> crafts;
                @SerializedName("行業")
                public List<String> industry;
            }
            
            @SerializedName("金銀銅器")
            public MetalTool metalTool;
            /**
             * 金銀銅器
             */
            public static class MetalTool {
                @SerializedName("年代")
                public List<String> years;
                @SerializedName("分類")
                public List<String> classification;
            }
            
            @SerializedName("木器家具")
            public WoodFurniture woodFurniture;
            /**
             * 木器家具
             */
            public static class WoodFurniture {
                @SerializedName("材質")
                public List<String> material;
                @SerializedName("器型")
                public List<String> Shape;
            }
            
            @SerializedName("玉石翡翠")
            public Emerald emerald;
            /**
             * 玉石翡翠
             */
            public static class Emerald {
                @SerializedName("材質")
                public List<String> material;
                @SerializedName("鑲嵌")
                public List<String> inlay;
                @SerializedName("分類")
                public List<String> classification;
            }
            
            @SerializedName("紅木文玩")
            public RedWoodHeritage redWoodHeritage;
            /**
             * 紅木文玩
             */
            public static class RedWoodHeritage {
                @SerializedName("分類")
                public List<String> classification;
                @SerializedName("材質")
                public List<String> material;
            }
            
            @SerializedName("雜項")
            public OtherItems otherItems;
            /**
             * 雜項
             */
            public static class OtherItems {
                @SerializedName("年代")
                public List<String> years;
            }
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM