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