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



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