使用Gson解析常见json字符串
2015-12-06 16:27
609 查看
日常开发中常遇到的json字符串主要有三种:
1)简单的json object 字符串String jsonObjectStr = "{\"name\":\"zhangsan\",\"age\":\"18\"}";
2)json array 字符串
String jsonArrayStr = "[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"28\"}]";
3)稍微复杂点的json object 字符串
String jsonSpecialStr = "{\"school\":\"NanJingDaXue\",\"city\":\"najing\",\"peoples\":[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"zhangsan\",\"age\":\"18\"}]}";
解析json的方法很多,这里总结下使用Gson解析以上三种json字符串的方法:
1、首先新建一个maven工程,pom文件中引入gson的依赖项:<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency>
2、根据前面提到的json字符串结构,可定义反序列化对象People类、Students:
package com.zgy.json.info; public class People { //name private String name; //age private String age; /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("People [name="); builder.append(name); builder.append(", age="); builder.append(age); builder.append("]"); return builder.toString(); } }
package com.zgy.json.info; import java.util.Arrays; import com.google.gson.annotations.SerializedName; public class Students { private String school; @SerializedName("city") //注解,当json字符串中的字段定义和所需的不同时,可用注解标注 private String city; private People [] peoples; /** * @return the school */ public String getSchool() { return school; } /** * @param school the school to set */ public void setSchool(String school) { this.school = school; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Students [school="); builder.append(school); builder.append(", city="); builder.append(city); builder.append(", peoples="); builder.append(Arrays.toString(peoples)); builder.append("]"); return builder.toString(); } }
3、简单的json object 字符串的解析
Code:
String jsonObjectStr = "{\"name\":\"zhangsan\",\"age\":\"18\"}"; Gson gson = new Gson(); People people = gson.fromJson(jsonObjectStr, People.class); System.out.println(people.toString());解析结果:
People [name=zhangsan, age=18]
4、json array 字符串的解析
Code:
String jsonArrayStr = "[{\"name\":\"zhangsan\",\"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"28\"}]"; Gson gson = new Gson(); People[] peoples = gson.fromJson(jsonArrayStr, People[].class); for (People x : peoples) { System.out.println(x.toString()); }解析结果:
People [name=zhangsan, age=18]
People [name=lisi, age=28]
5、第三种复杂json
Code:
String jsonSpecialStr = "{\"school\":\"NanJingDaXue\",\"city\":\"nanjing\",\"peoples\":[{\"name\":\"zhangsan\",\"age\":\"18\"},
{\"name\":\"lisi\",\"age\":\"28\"}]}"; Gson gson = new Gson(); Students students = gson.fromJson(jsonSpecialStr, Students.class); System.out.println(students.toString());解析结果:
Students [school=NanJingDaXue, city=nanjing, peoples=[People [name=zhangsan, age=18], People [name=lisi, age=28]]]
相关文章推荐
- javaScript基础练习题-下拉框制作(CSS)
- javaScript基础练习题-下拉框制作
- JS拖拽组件开发
- JSTL 核心标签库 使用
- jstl标签库 stuts2标签OGNL表达式
- JS-拖拽效果
- JS版-简易年历
- 解码未知结构的JSON数据
- javascript 自定义Array对象
- JS中继承方法的应用--判断数组
- js对象的创建和继承
- 瀑布流效果
- Jackson 框架,轻易转换JSON
- 编解码JSON数据
- js异常处理
- seajs配置问题详解以及seajs一些插件的使用
- JavaScript-offsetWidth,clientWidth,scrollWidth,及对应top、left区别及实测结果
- JSON数据的两种嵌套形式
- 基于jse的金蝶K3ERP-BOM物料编码位置号比对工具(输出excel)
- Extjs 6 MVC开发模式(一)