gson解析json数据分析
来源:互联网 发布:mac mini 老款拆机 编辑:程序博客网 时间:2024/05/21 14:05
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用。如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的libs目录下添加这个文件即可;如果是在Java项目中,则把gson-2.2.4.jar先添加到当前项目的任意一个包中,然后右键点击这个jar包 -> 构建路径 -> 添加至构建路径。这样准备工作就做好了。
1.工具类
/****封装Json解析工具类,提供范型参数*/
class GsonUtil{ //将json数据 解析成相应的映射对象
public static <T> T parseJsonWithGson(String jsonData,Class<T> type){
Gson gson = new Gson();
T result = gson.fromJson(jsonData,type);
return result;
}
//将Json数组解析成相应的映射对列表
public static <T> List<T> parseJsonArrayWithGson(String jsonData, Class<T> type){
Gson gson = new Gson();
List<T> result = gson.fromJson(jsonData,new TypeToken<List<T>>().{}.getType() );
return result ;
}
}
(1)单条无嵌套Json数据的解析
eg:{“name”:“jz”,"age":20}
1.定义数据结构类:
public class Person {
private String name ;
private String age;
//提供变量的set和get方法
}
2. 创建Gson对象并解析:
1 String jsonData = "{\"name\":\"John\", \"age\":20}"; //注:这里也可以不使用转义字符,而用单引号:String jsonData = "{'name':'John', 'age':20}";2 Gson gson = new Gson();3 Person person = gson.fromJson(jsonData,Person.class);
String jsonData = "{'name':'John', 'age':20}"; Person person = GsonUtil.parseJsonWithGson(jsonData, Person.class);
(2)单条有嵌套的Json数据解析
eg:{"name":"John", "age":20,"grade":{"course":"English","score":100,"level":"A"}}
1、定义Student类:
1 class Student { 2 private String name; 3 private String age; 4 5 private Grade grade; 6 7 public class Grade { // 内部类要定义成public的 8 private String course; 9 private String score;10 private String level;11 12 public String getCourse() {13 return course;14 }15 16 public void setCourse(String course) {17 this.course = course;18 }19 20 public String getScore() {21 return score;22 }23 24 public void setScore(String score) {25 this.score = score;26 }27 28 public String getLevel() {29 return level;30 }31 32 public void setLevel(String level) {33 this.level = level;34 }35 36 // 重写toString方法37 @Override38 public String toString() {39 return "Grade:[course = " + course + ", score = " + score40 + ", level = " + level + "]";41 }42 }43 44 // 重写toString方法45 @Override46 public String toString() {47 return "Student:[name = " + name + ", age = " + age + ", grade = "48 + grade + "]";49 }50 }
String jsonData = "{'name':'John', 'age':20,'grade':{'course':'English','score':100,'level':'A'}}"; Student student = GsonUtil.parseJsonWithGson(jsonData, Student.class);(三) 解析Json数组(多条Json数据)
例如: [{'name':'John', 'grade':[{'course':'English','score':100},{'course':'Math','score':78}]}, {'name':'Tom', 'grade':[{'course':'English','score':86},{'course':'Math','score':90}]}] //注:Json数组最外层一定要加"[]"
String jsonData = "[{'name':'John', 'grade':[{'course':'English','score':100},{'course':'Math','score':78}]},{'name':'Tom', 'grade':[{'course':'English','score':86},{'course':'Math','score':90}]}]"; List<Student> students = GsonUtil.parseJsonArrayWithGson(jsonData, Student.class);
2 class Student {43 private String name;44 private List<Grade> grade; // 因为grade是个数组,所以要定义成List45 46 public class Grade {47 private String course;48 private String score;49 50 public String getCourse() {51 return course;52 }53 54 public void setCourse(String course) {55 this.course = course;56 }57 58 public String getScore() {59 return score;60 }61 62 public void setScore(String score) {63 this.score = score;64 }65 66 }67 68 public String getName() {69 return name;70 }71 72 public void setName(String name) {73 this.name = name;74 }75 76 public List<Grade> getGrade() {77 return grade;78 }79 80 public void setGrade(List<Grade> grade) {81 this.grade = grade;82 }83 }如果数据结构这样子:(很重要)用下面这个:
- [{"title":"qq","aipPath":"/jeesite/2016/09/1474182626803_nbspd.aip","delFlag":"0","id":"7ef6815938394fce88a5873312b661e4","isNewRecord":false}]
- public static <T> List<T> getObjectList(String jsonString,Class<T> cls){
- List<T> list = new ArrayList<T>();
- try {
- Gson gson = new Gson();
- JsonArray arry = new JsonParser().parse(jsonString).getAsJsonArray();
- for (JsonElement jsonElement : arry) {
- list.add(gson.fromJson(jsonElement, cls));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return list;
- }
借鉴:http://www.cnblogs.com/jiayongji/p/5297187.html
http://www.cnblogs.com/jianyungsun/p/6647203.html
- gson解析json数据分析
- Gson解析Json数据
- Gson解析Json数据
- Gson解析Json数据
- Gson解析json数据
- Gson解析json数据
- Gson解析Json数据
- Gson解析Json数据
- gson 解析json数据
- GSON解析json数据
- Gson解析Json数据
- Gson解析Json数据
- Gson解析json数据
- Gson解析json数据
- gson 解析json数据
- Gson解析json数据
- Gson解析json数据
- Gson解析json数据
- Python 发送邮件
- 云服务被归类为IDC业务 提供云服务必须持证"上岗"
- noi多维数组 13:图像模糊处理
- Spring Data JPA
- linux下升级openssl到新版本
- gson解析json数据分析
- HDU_1005_Number Sequence
- Java设计模式14——中介者(Mediator)模式
- 搜索引擎爬虫原理
- 【Git学习】git回滚到任意版本号
- 《Unity 3D游戏客户端基础框架》消息系统
- 数字图像处理实验(一)
- 关于vue的那些小事
- Futures (based on version 22.0)