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(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。
获取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中提取数值信息。
自从使用了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());
更多相关文章
- Android虚拟键盘弹出时挡住EditText解决方法
- Android(安卓)毛玻璃效果的实现
- 详解 Android(安卓)的 Activity 组件 -
- 查看Android内存的8中方法
- Android中Activity全局共享方法AppContext
- 《Android面试宝典》学习笔记(第四章:对话框、信息提示和菜单)
- Android学习笔记―第十一章 Fragment
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用