1.什么是Json?
- 1.1 Json是客户端与服务器的一种数据交换格式
- 1.2 采用键值对方式存储
- 1.3 与xml相比,效率更高
- 1.4 Json本身是一个对象
2.Json的格式
var json={
"key":[1,2,3], //键必须是string类型,值可以为任何类型,类似于Python的字典
"key1":["value1",2,3],
"key2":"value2"
}
3.json和java对象的相互转换
public void test()
{
Gson gson=new Gson(); //json的封装类
Person person=new Person("张三",18,1000);
String str=gson.toJson(person); //将java对象转化为字符串
System.out.println(str);
Person person1=gson.fromJson(str,person.getClass()); //将字符串装换为java对象
System.out.println(person1);
}
4.json对象和集合的相互转换
//json和集合的相互转化
public void test()
{
Gson gson=new Gson(); //json的封装类
List<Person> list=new ArrayList<Person>();
list.add(new Person("jock",18,1000));
list.add(new Person("john",20,2000));
String str= gson.toJson(list);
System.out.println(str);
List<Person> list1=gson.fromJson(str,new PersonListType().getType());
System.out.println(list1);
}
//gson包中有一个反射类TypeToken,用于json数据转换为集合数据
public class PersonListType extends TypeToken<List<Person>> {
}
新建一个类去继承typetoken的方式不常用,会导致类的大量冗余
5.json和map的相互转换
//json和Map的相互转化
public void test()
{
Gson gson=new Gson(); //json的封装类
Map<String,Person> map=new HashMap<String,Person>();
map.put("1",new Person("tom",18,1000));
map.put("2",new Person("rose",20,2000));
String str= gson.toJson(map);
System.out.println(str);
//一般采用内部匿名类
Map<String,Person> map1=gson.fromJson(str,new TypeToken<Map<String,Person>>()
{
}.getType());
Set<Map.Entry<String,Person>> entry= map1.entrySet();
for (Map.Entry<String,Person> m:entry
) {
System.out.println(m.getKey());
System.out.println(m.getValue());
}
}