日期:2014-05-17  浏览次数:20864 次

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\");

然后后面的你应该会的