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());
}