(Android, JAVA) Как реализовать 3 или 4 глубины Json с GSON?

У меня вопрос по поводу GSON lib.

Мои данные JSON ЗДЕСЬ:

 {
    "UserID":"",
    "Data1":{
        "Data1_1":[{
            "name":"name1",
            "test":"test2"
        },
        {
            "name":"name2",
            "test":"test2"
        }],
        "Data1_2":{
            "Data1_2_1":[{
                "addr":"addr1",
                "phone":"phone1"
            },
            {
                "addr":"addr2",
                "phone":"phone2"
            }],
            "Data1_2_2":[{
                "country":"country1",
                "sex":"M"
            },
            {
                "country":"country1",
                "sex":"F"
            }]
        }
    }
}

Мой класс объектов GSON ЗДЕСЬ:

    public class GsonClass {
    public String UserID;
    public ArrayList<Data1> Data1;

    public class Data1 {
        ArrayList<Data1_1> Data1_1;
        ArrayList<Data1_2> Data1_2;

        public class Data1_1 {
            public String name;
            public String test;
        }

        public class Data1_2 {
            ArrayList<Data1_2_1> Data1_2_1;
            ArrayList<Data1_2_2> Data1_2_2;

            public class Data1_2_1 {
                public String addr;
                public String phone;
            }

            public class Data1_2_2 {
                public String country;
                public String sex;
            }
        }
    }
}

Но библиотека GSON вернула JSONParserException. Когда я тестировал без Data1_2, GSON Parser был в порядке. Но с Data1_2. Библиотека GSON возвращает исключения.

Как установить класс GSON в 3 или 4 глубины JSON?

1 ответ

Решение

Попробуй это.

Во-первых, мы должны знать о том, как бороться с [] а также {} в Gson,

  • Если мы найдем {} в JSON мы должны использовать DataBean в Gson,

  • Если мы найдем [] в JSON мы должны использовать List<DataBean> в Gson,

И это класс.

public class GsonClass {

/**
 * UserID : 
 * Data1 : {"Data1_1":[{"name":"name1","test":"test2"},{"name":"name2","test":"test2"}],"Data1_2":{"Data1_2_1":[{"addr":"addr1","phone":"phone1"},{"addr":"addr2","phone":"phone2"}],"Data1_2_2":[{"country":"country1","sex":"M"},{"country":"country1","sex":"F"}]}}
 */

private String UserID;
private Data1Bean Data1;

public String getUserID() {
    return UserID;
}

public void setUserID(String UserID) {
    this.UserID = UserID;
}

public Data1Bean getData1() {
    return Data1;
}

public void setData1(Data1Bean Data1) {
    this.Data1 = Data1;
}

public static class Data1Bean {
    /**
     * Data1_1 : [{"name":"name1","test":"test2"},{"name":"name2","test":"test2"}]
     * Data1_2 : {"Data1_2_1":[{"addr":"addr1","phone":"phone1"},{"addr":"addr2","phone":"phone2"}],"Data1_2_2":[{"country":"country1","sex":"M"},{"country":"country1","sex":"F"}]}
     */

    private Data12Bean Data1_2;
    private List<Data11Bean> Data1_1;

    public Data12Bean getData1_2() {
        return Data1_2;
    }

    public void setData1_2(Data12Bean Data1_2) {
        this.Data1_2 = Data1_2;
    }

    public List<Data11Bean> getData1_1() {
        return Data1_1;
    }

    public void setData1_1(List<Data11Bean> Data1_1) {
        this.Data1_1 = Data1_1;
    }

    public static class Data12Bean {
        private List<Data121Bean> Data1_2_1;
        private List<Data122Bean> Data1_2_2;

        public List<Data121Bean> getData1_2_1() {
            return Data1_2_1;
        }

        public void setData1_2_1(List<Data121Bean> Data1_2_1) {
            this.Data1_2_1 = Data1_2_1;
        }

        public List<Data122Bean> getData1_2_2() {
            return Data1_2_2;
        }

        public void setData1_2_2(List<Data122Bean> Data1_2_2) {
            this.Data1_2_2 = Data1_2_2;
        }

        public static class Data121Bean {
            /**
             * addr : addr1
             * phone : phone1
             */

            private String addr;
            private String phone;

            public String getAddr() {
                return addr;
            }

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

            public String getPhone() {
                return phone;
            }

            public void setPhone(String phone) {
                this.phone = phone;
            }
        }

        public static class Data122Bean {
            /**
             * country : country1
             * sex : M
             */

            private String country;
            private String sex;

            public String getCountry() {
                return country;
            }

            public void setCountry(String country) {
                this.country = country;
            }

            public String getSex() {
                return sex;
            }

            public void setSex(String sex) {
                this.sex = sex;
            }
        }
    }

    public static class Data11Bean {
        /**
         * name : name1
         * test : test2
         */

        private String name;
        private String test;

        public String getName() {
            return name;
        }

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

        public String getTest() {
            return test;
        }

        public void setTest(String test) {
            this.test = test;
        }
    }
}
}

И используйте в своем коде, как это.

И как разбирать JSON в коде.

1.Use gson.fromJson(response,GsonClass.class); преобразовать JSON К DataBean учебный класс.

2. Используйте метод get и set. gsonClass.getUserID(),

3. Когда мы находим List в нем мы можем использовать цикл for. И это цикл for, мы можем использовать как это gsonClass.getData1().getData1_1().get(i).getName();,

Gson gson = new Gson();
GsonClass gsonClass = gson.fromJson(response,GsonClass.class);

String UserID = gsonClass.getUserID();

for (int i = 0; i < gsonClass.getData1().getData1_1().size(); i++) {
    String name = gsonClass.getData1().getData1_1().get(i).getName();
    String test = gsonClass.getData1().getData1_1().get(i).getTest();
}

for (int i = 0; i < gsonClass.getData1().getData1_2().getData1_2_1().size(); i++) {
    String addr = gsonClass.getData1().getData1_2().getData1_2_1().get(i).getAddr();
    String phone = gsonClass.getData1().getData1_2().getData1_2_1().get(i).getPhone();
}

for (int i = 0; i < gsonClass.getData1().getData1_2().getData1_2_2().size(); i++) {
    String country = gsonClass.getData1().getData1_2().getData1_2_2().get(i).getCountry();
    String sex = gsonClass.getData1().getData1_2().getData1_2_2().get(i).getSex();
}

И вы можете использовать GsonFormat в вашей Android Studio конвертировать JSON К классу.

Это будет быстро для вас.

1.AddGsonFormat 2. Используйте в коде

Другие вопросы по тегам