Gson 解析json 字符串的问题
Gson 解析json 我只会两种,一种是: {"name":"gaofeng","age":"20"}
还有一种就是数组: [{"name":"gaofeng","age":"20"},{"name":"myname","age":"22"}]
可是现在我碰见了一种这样的json格式就不会解析了,请各位帮帮小弟吧,下面的怎么解析呢?
{
"country":{
"city":{
"persions":[
{"name":"gaofeng","age":"22"},
{"name":"wangwu","age":"20"},
{"name":"lisi","age":"22"},
]
}
}
}
网上说可以这样解析:
class A{
public String name;
public String age; //get set 方法就不写了
}
class B{
public String country;
public String city;
public List<A> persions;
}
下面就说解析B对象,可是怎么解析呢?总是报错呀,错误如下
Expected a string but was BEGIN_OBJECT at line 1 column 40。 现在我就想知道怎么解析B呢?拜托各位了,谢谢
[解决办法]
解析的代码:
package com.justsy.test;
import java.util.List;
import com.google.gson.Gson;
public class TestGson {
public static void main(String[] args) {
String gs = "{"+
"country:{"+
"city:{"+
"persons:["+
"{name:gaofeng,age:22},"+
"{name:bing,age:23}"+
"]"+
"}"+
"}"+
"}";
Gson gson = new Gson();
T t = gson.fromJson(gs, T.class);
List<Person> persons = t.getCountry().getCity().getPersons();
System.out.println("c:"+persons);
for(Person p:persons){
System.out.println("pname:"+p.getName());
System.out.println("page:"+p.getAge());
}
}
class T{
private Country country;
public T(){}
public Country getCountry() {
return country;
}
public void setCountry(Country country) {
this.country = country;
}
}
class Country{
private City city;
public Country(){}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
}
class City{
private List<Person> persons;
public City(){}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
}
class Person{
private String name;
private int age;
public Person(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
拼字符串拼的我好辛苦......
[解决办法]
这种情况就要用数组:
JSONArray jsonArray = jsonObject1.getJSONArray(\"persons\");
然后后面的你应该会的