* 谷歌的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()));
}
}