Gson 数据解析

一:json:JavaScriptObjectNotation

json解析object:Personperson=newPerson();

JSONObjectjsonObject=newJSONObject(jsonString);

JSONObjectpersonObject=jsonObject.getJSONObject(key);

person.setId(personObject.getInt("id"));

person.setName(personObject.getString("name"));

person.setAddress(personObject.getString("address"));

解析List

List<Person>list=newArrayList<Person>();

try{

JSONObjectjsonObject=newJSONObject(jsonString);

JSONArrayjsonArray=jsonObject.getJSONArray(key);

for(inti=0;i<jsonArray.length();i++){

JSONObjectjsonPerson=jsonArray.getJSONObject(i);

Personperson=newPerson();

person.setId(jsonPerson.getInt("id"));

person.setName(jsonPerson.getString("name"));

person.setAddress(jsonPerson.getString("address"));

list.add(person);

二:gson:gson和其他现有javajson类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

Gsongson=newGson();

List<Person>persons=newArrayList<Person>();

for(inti=0;i<10;i++){

Personp=newPerson();

p.setName("name"+i);

p.setAge(i*5);

persons.add(p);

}

Stringstr=gson.toJson(persons);

下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法

Personperson=gson.fromJson(str,Person.class);

List<Person>ps=gson.fromJson(str,newTypeToken<List<Person>>(){}.getType());

for(inti=0;i<ps.size();i++)

{

Personp=ps.get(i);

System.out.println(p.toString());

}

相关推荐