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

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();
	}

	@Override
	public 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 block
			e.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 block
			e.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值