(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
К классу.
Это будет быстро для вас.