(android,JAVA)如何使用GSON实现3或4深度Json?
我有一个关于GSON lib的问题。(android,JAVA)如何使用GSON实现3或4深度Json?
我的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解析器好。 但是,与Data1_2。 GSON库返回异常。
如何在3或4深度JSON中设置GSON类?
试试这个。
首先,我们必须知道如何处理[]
和{}
中的Gson
。
如果我们在
JSON
找到{}
,我们必须在Gson
使用公司Databeans。如果我们在
JSON
中发现[]
,我们必须在Gson
中使用List<DataBean>
。
这是班级。
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.使用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
上课。
这对你来说会很快。
请解释您所做的更改以及原因。 –
我已经解释过了。@ SotiriosDelimanolis – KeLiuyue
@KeLiuyue谢谢您的好意回复先生:) 我会试试这个。谢谢:-) –
什么是异常消息说?你不了解它吗?你的POJO定义中真的是内部类吗?为什么? –