Gson解析(详解)

先介绍一下Android原生的解析

在Android中包含四个与JSON相关的类和一个Exceptions:

JSONObject   
JSONArray            
JSONStringer
JSONTokener
JSONException


1,JSONObject  

{“JSON”: “Hello, World”},key和velue用:分隔。

初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put(“JSON”, “Hello, World!”),在Key和Value之间是以逗号”,”分隔。
Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
有两个不同的取值方法:
get(): 在确定数值存在的条件下使用,否则当无法检索到相关Key时,将会抛出一个Exception信息。
opt(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。

2,JSONArray    
获取jsonarray,并把jsonarray转化为jsonobject
//将此json数据变成一个对象。
JSONObject jsonObject = new JSONObject(String);
//然后获得list里面的数据
JSONArray jsonArray = jsonObject.getJSONArray("list");

//当不知道key时,使用循环for(int i=0;i)
    {
        JSONObject jsonOb = (JSONObject)jsonArray.opt(i);
        int tel = jsonOb.getInt("tel");
    }

3,JSONStringer:

根据官方的解释,这个类可以帮助快速和便捷的创建JSONtext。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntaxrules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

String myString = new JSONStringer().object().key("name").value("小猪").endObject().toString();  
//结果是一组标准格式的JSON text:{"name" : "小猪"}

其中的.object()和.endObject()必须同时使用,是为了按照Object标准给数值添加边界。同样,针对数组也有一组标准的方法来生成边界.array()和.endArray()。

4,JSONTokener:
这个是系统为JSONObject和JSONArray构造器解析JSON source string的类,它可以从source string中提取数值信息。

5,JSONException:

是JSON.org类抛出的异常信息。


自从使用了gson,一切都变得简单了

Gson有两个重要的方法,一个是toJson,一个是fromJson,也就是序列化和反序列化。

比如解析下面这个gson串:

{
	"name" : "Ravi Tamada", 
	"email" : "[email protected]",
	"phone" : {
		"home" : "08947 000000",
		"mobile" : "9999999999"
	}
	
}
先写一个User
public class User {
private String name;
private String email;
private Phone phone;}
再写一个Phone
 
   
public class Phone {
private String home;
private String mobile;}
接下来一切都简单了
 
   
Gson gson = new Gson();
User user = gson.fromJson(response.toString(), User.class);
mTextViewVolley.setText(user.getName()+"\n"+user.getEmail()+"\n"+"phone:"+user.getPhone().getHome());

你可能感兴趣的:(android)