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
- JSON与泛型的结合(大幅度减小工作量)-巧用工具类
- 用工具进行Json的转换
- 不适用工具类解析Json
- android用工具类
- sftp传输用工具类
- C#类金山辞典的个人用工具
- Collections集合操作(List、Set、Map)-巧用工具类
- 终端复用工具tmux的使用
- windows 自带的好用工具
- 常用用工具类--掩码利器
- android App大小大幅度减小
- 巧用工具封装属于自己的ORM框架【XutilsDbUtil】分装
- Hibernate读取配置文件,创建sessionFactory的执行过程以及用工具类优化
- 搭建环境用工具
- 好用工具
- 用工具激活visio2013
- 好用工具记录
- 好用工具
- Maven生命周期详解
- Redis+MySQL冷热数据交换
- C# FtpHelper实现ftp服务器文件读写操作
- 师--链表的结点插入
- 使用Gilde加载图片时裁剪大小异常
- JSON与泛型的结合(大幅度减小工作量)-巧用工具类
- 内部类
- 解决ajax的status=0问题:submit和button冲突
- STM32 内部flash的读写程序
- Multilayer Perceptron(MLP)
- [BZOJ Contest-2017省队十连测推广赛1·T2][BZOJ4766][完全二分图的生成树个数]文艺计算姬
- 如何让某软件永不联网?
- zabbix自带触发器介绍
- ABP 框架从源码学习——abp框架启动和结束(1)