GSON解析JSON

使用谷歌的gson解析json
 * 谷歌的gson.jar
 *
 * 总结:
 * 1、Gson类对象中可以添加json文件的对象类型和数组类型
 * 2、可以把json文件转换为java的对象(包括集合),或者java的对象(包括集合)转换为json格式的字符串
 *    需要实现TypeToken泛型接口,调用getType()方法,并且给出需要转换的具体类型
 *
 * 注意:java对象转换为json格式的字符串时,如果该属性值为null值,那么在字符串中没有添加进去

 * 附注:GsonBuilder类是一个Gson构造器,可以显示属性值为null的属性


 */


public class Gsonjson {

	public static void main(String[] args) throws Exception {
		/**
		 * 	1、Gson对象的使用
		 */
		//创建Gson对象
		Gson gson=new Gson();
		
		//java里面的对象转换为json格式的字符串
		String json=gson.toJson(new Student(1001,"杨钰莹",98.9));
		//java里面的List对象转换为json格式的字符串
		String array=gson.toJson(JSONUtil.getListData());
		
		//json格式的字符串转换为java对象(List集合对象)
		//fromJson()方法
		//参数1:json格式的字符串      
		//参数2:实现TypeToken泛型接口(匿名内部类),调用getType()方法,并且给出具体转换的类型
		List<Student>list=gson.fromJson(array, new TypeToken<List<Student>>(){}.getType());
		
/*		for(Student student:list){//遍历集合
			System.out.println(student);
		}*/
		
		//Student student=gson.fromJson(json, new TypeToken<Student>(){}.getType());
		
		//解析本地的json文件
		InputStream inputStream=new FileInputStream("student.json");
		BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
		
		StringBuffer buffer=new StringBuffer();// 缓冲字符串
		String json1=null;//接收每次读取的字符串
		while((json1=reader.readLine())!=null){
			buffer.append(json1.trim());//拼接到缓冲字符串,去掉空格
		}
		
		json1=buffer.toString();//把读取的字符数据赋值给字符串
		
		//把json格式的字符串转换为java对象(List集合对象)
		List<Student>list1=gson.fromJson(json1, new TypeToken<List<Student>>(){}.getType());
		
		for(Student stu:list1){//遍历集合
			System.out.println(stu);
		}
		
		
		/**
		 *    2、GsonBuilder构造器的使用
		 */
		System.out.println("=========================================================");
						//方法链
		//serializeNulls()方法,将null的属性显示出来
		//create()方法,创建Gson对象
		Gson gson2=new GsonBuilder().serializeNulls().create();
		System.out.println("Gson添加的对象:"+gson.toJson(new Student()));
		System.out.println("GsonBuilder添加的对象"+gson2.toJson(new Student()));
		
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章