JSON与泛型的结合(大幅度减小工作量)-巧用工具类

来源:互联网 发布:suse网络不通 编辑:程序博客网 时间:2024/05/20 10:52

JSON是一种与开发语言无关的、轻量级数据格式,是比较常用的一种工具。英文全写JavaScript Object Notation。

优点:易于人的阅读和编写,易于程序解析与生成。


标准的json数据表示

数据结构:Object,Array

基本类型:string,number,true,false,null


Object:使用花括号{}包含的键值对结构,Key必须是string类型的,value为任何基本类型或数据结构。

Array:使用中括号[]包括,用逗号来分隔元素。


下面是一个exam:

{"name" : "张三","age" : 18,"education" : true,"car" null,"friend":["李四","王五"],}


下面开始介绍json在java中的应用


JSON官网:http://www.json.org.cn/


java中用于解释json的主流工具有org.json、json-lib与gson,本文介绍gson的应用


首先创建一个学生类Student,用于存放实体信息。

public class Student {private int id;private String name;private String sex;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Student(int id, String name, String sex, int age) {super();this.id = id;this.name = name;this.sex = sex;this.age = age;}public Student() {super();}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", sex=" + sex+ ", age=" + age + "]";}}

然后可以通过Gson的toJson方法生成json串,我这里生成的是一个ArrayList<Student>

ArrayList<Student> stus = new ArrayList<Student>();for (int i = 1; i <= 30; i++) {stus.add(new Student(i, "sss", "M", 19));}String json = new Gson().toJson(stus);


当然了,解析也很方便~

Student[] stus = new Gson().fromJson(json, cls);ArrayList<Student> list = Arrays.asList(stus);

但是,你开发的时候难道每个实体都要写这句话么?!NONONO,作为一个程序猿,我们首先要学会的是什么,代码复用!!敲黑板!!减小代码量,提高代码可读性才是我们的追求,下面我们来讲怎么用泛型来减小工作压力!直接上代码!

public class JsonUtils {public static <T> T getData(String json, Class<T> cls) {T data = null;try {data = new Gson().fromJson(json, cls);} catch (JsonSyntaxException e) {// TODO Auto-generated catch blocke.printStackTrace();}return data;}public static <T> List<T> getList(String json, Class<T[]> cls) {List<T> list = null;try {T[] t = new Gson().fromJson(json, cls);list = Arrays.asList(t);} catch (JsonSyntaxException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}}
这份代码想必大家都能看懂,经过如此优化,再用起来就方便啦~

ArrayList<Student> list = JsonUtil.getList(json , Student.class);


当然了,创建JSON串的时候也可以用Object进行封装一下,类似下面这样

public static String createJsonString(Object value) {Gson gson = new Gson();//如果用的多的话,可以作为类变量,不用多次声明String str = gson.toJson(value);return str;}


我觉得这次就到此位置,大家可以根据我的文章结合自己代码的实际情况进行改进,以后如果找到更好的技巧再加进来,谢谢大家阅读~






0 0
原创粉丝点击