Android中使用gson解析JSON
来源:互联网 发布:mac液体唇膏三文鱼粉 编辑:程序博客网 时间:2024/06/07 12:02
首先,我们需要在code.google.com/p/google-gson/downloads/list下载gson-1.6.jar,然后将文件导入到你需要解析的项目中去。
gson中解析Json数据用JsonReader。
gson可以将Json数据转化为Java对象:
1. 先有一个Json对象String str ="{\"name\":\"Michael\",\"age\":20}",Json类可以直接把Json数据转化为Java对象
2. 创建User类
public class User{ privateString name; private int age; public void setName(Stringname){ this.name= name; } public String getName(){ returnname; } public void setAge(int age){ this.age= age; } public int getAge(){ return age; }}
3. 创建Gson对象
Gson gson = new Gson();//第二个是指示转为哪个类的对象User user = gson.fromJson(str , User.class);Sysout.out.println(user.getName);Sysout.out.println(user.getAge);
也可以将Json数组转换为Java对象:
1. 这是Json数据,String str ="[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"。这个Json数据有一个数组,数组里面有两个Json对象
2. 首先必须生成Type对象,使用以下的方式(User是上面的User类):
listType= new TypeToken<LinkedList<User>>(){}.getType();
3. 生成Gson对象
Gsongson = new Gson();
4.
LinkedList<User>users = gson.fromJson(str , listType);
5. 循环迭代LinkedList
for(Iteratoriterator = users.iterator ; iterator.hasNext() ){ User user = (User)iterator.next(); System.out.println(user.getName()); System.out.println(user.getAge());}
综合例子
{ "id": 912345678901, "age": 33, "text": "How do I streamJSON in Java?", "geo": null, }
红色部分如果表示有可能为null,则在判断的时候需要如下name.equals("geo")&& reader.peek() != JsonToken.NULL
橙色部分要是想不解析其中的Json字段,需要在判断的时候加上一个else语句如下:else{reader.skipValue()}
例子1
Json数据,后面每一个都是如此不再做任何的解析了,然后跟着就是对应的代码内容
{ "id": 912345678901, "text": "How do I stream JSON in Java?", "geo": null, "user": { "name": "json_newb", "followers_count": 41 }}
reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("id")) { System.out.println("id:" + reader.nextLong()); } else if (name.equals("text")) { System.out.println("text:" + reader.nextString()); } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) { System.out.println("text:" + reader.nextString()); } else if (name.equals("user")) { usernameObject(); } else { reader.skipValue(); } } reader.endObject(); private void usernameObject() throws IOException{ reader.beginObject(); while (reader.hasNext()) { String nxtName = reader.nextName(); if (nxtName.equals("name")) { System.out.println("nxtName:" + reader.nextString()); } else if (nxtName.equals("followers_count")) { System.out.println("nxtName:" + reader.nextInt()); } }
例子2.
[{ "id": 912345678901, "text": "How do I stream JSON in Java?", "geo": null, "user": { "name": "json_newb", "followers_count": 41 }},{ "id": 777777777888, "text": "dfngsdnglnsldfnsl", "geo": null, "user": { "name": "dsfgpd", "followers_count": 24 }}]
reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("id")) { System.out.println("id:" + reader.nextLong()); } else if (name.equals("text")) { System.out.println("text:" + reader.nextString()); } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) { System.out.println("text:" + reader.nextString()); } else if (name.equals("user")) { usernameObject(); } else { reader.skipValue(); } } reader.endObject(); }reader.endArray();
例子3.
{ "statuses":[ { "id": 912345678901, "text": "How do Istream JSON in Java?", "geo": null, "user": { "name": "json_newb", "followers_count": 41 } }, { "id": 777777777888, "text":"dfngsdnglnsldfnsl", "geo": null, "user": { "name": "dsfgpd", "followers_count": 24 } } ]}
reader.beginObject(); while(reader.hasNext()) { String begin = reader.nextName(); if(begin.equals("statuses")) { array(); } } reader.endObject(); private void array() throws IOException{ reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("id")) { System.out.println("id:" + reader.nextLong()); } else if (name.equals("text")) { System.out.println("text:" + reader.nextString()); } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) { System.out.println("text:" + reader.nextString()); } else if (name.equals("user")) { usernameObject(); } else { reader.skipValue(); } } reader.endObject(); } reader.endArray(); } private void usernameObject() throws IOException{ reader.beginObject(); while (reader.hasNext()) { String nxtName = reader.nextName(); if (nxtName.equals("name")) { System.out.println("nxtName:" + reader.nextString()); } else if (nxtName.equals("followers_count")) { System.out.println("nxtName:" + reader.nextInt()); } } reader.endObject(); }
0 0
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android 中 使用 Gson解析json
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用gson解析JSON
- Android中使用Gson解析JSON数据
- Android 中 使用 Gson解析json
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中Gson解析json
- Android使用gson解析json
- 在Android中可以使用Gson解析JSON数据
- Android开发中使用Gson解析json数据
- Android中使用Gson解析JSON数据的方法
- Android中Gson解析json数据使用@SerializedName注解
- Spring学习之DI(二)
- C++11 lambda表达式
- maven基础学习(三)-简单实例(运行)
- 郝斌数据结构(二):单链表
- LeetCode || Binary Tree Preorder Traversal
- Android中使用gson解析JSON
- Java获取数字中单个数字,实例 获取水仙花数
- hadoop学习-倒排索引
- linux 下 opendir 和 readdir 函数的应用
- leetcode: Trapping Rain Water
- 二叉查找(排序)树
- 利用Lightroom添加边框及批量导出
- Java -- 在Eclipse上使用XFire开发WebService
- 《深入Linux设备驱动程序机制》学习心得---字符设备驱动原理图解(写得好)