Json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
解析Json
Java 有很多工具包可以用来解析Json,作者使用google公司的Gson包来解析Json,为什么使用Gson呢?
1,方法少,使用方便。
2,写的代码少。
总之就是简洁。
Gson的方法
gson主要有2个重要方法:
1,toJson()方法,用于将Java对象转换为相应的JSON数据
2,fromJson()方法,用于将JSON数据转换为相应的Java对象
实例
public static void main(String args[]) {
List<Person> listPerson = getListPerson();
Person person = getPerson();
Gson gson = new Gson();
String json = gson.toJson(person);
String jsonList = gson.toJson(listPerson);
System.out.println(json);
System.out.println("-------------------------");
System.out.println(jsonList);
System.out.println("-------------------------");
Person fromJson = gson.fromJson(json, Person.class);
System.out.println(fromJson.toString());
List<Person> fromJsonList = gson.fromJson(jsonList, new TypeToken<List<Person>>() {}.getType());
System.out.println("-------------------------");
System.out.println(fromJsonList.toString());
System.out.println("-------------------------");
}
public static Person getPerson() {
return new Person(001, "jack", 25);
}
public static List<Person> getListPerson() {
List<Person> list = new ArrayList<Person>();
Person person1 = new Person(001, "jack", 25);
Person person2 = new Person(002, "rose", 24);
Person person3 = new Person(003, "bob", 26);
list.add(person1);
list.add(person2);
list.add(person3);
return list;
}
解析Json 数据时,我们需要将Java对象的类型作为入参输入,
1, 普通对象可以直接.class()获得类型
2, 集合对象可以使用TypeToken获得类型,TypeToken是GSON提供的数据类型转换器,支持多种数据集合类型转换,其反射机制可以实现将解析出来的Java对象映射到对应的数据集合中。