先介绍一下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(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。
获取jsonarray,并把jsonarray转化为jsonobject
//将此json数据变成一个对象。 JSONObject jsonObject = new JSONObject(String); //然后获得list里面的数据 JSONArray jsonArray = jsonObject.getJSONArray("list"); //当不知道key时,使用循环for(int i=0;i<jsonArray.length();i++) { JSONObject jsonOb = (JSONObject)jsonArray.opt(i); int tel = jsonOb.getInt("tel"); }
根据官方的解释,这个类可以帮助快速和便捷的创建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中提取数值信息。
自从使用了gson,一切都变得简单了
Gson有两个重要的方法,一个是toJson,一个是fromJson,也就是序列化和反序列化。
比如解析下面这个gson串:{ "name" : "Ravi Tamada", "email" : "ravi8x@gmail.com", "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());