json的存在有两种形式。
一种是:对象的形式存在,我们叫它json对象。
一种是:字符串的形式存在,我们叫它json字符串。
一般我们要操作json中的数据的时候,需要json对象的格式。一般我们要在客户端和服务器之间进行数据交换的时候,使用json字符串。
JSON.stringify()把json对象转换成为json字符串
JSON.parse()把json字符串转换成为json对象
//把json对象转换成为json字符串
var jsonObjString = JSON.stringify(jsonObj);//特别像Java中对象的toStringalert(jsonObjString)
//把json字符串。转换成为json对象
var jsonObj2 = JSON.parse(jsonObjString);
alert(jsonObj2.key1);//12
alert(jsonObj2.key2);//abc
@Test
publicvoidtest1(){
Person person = new Person(1,"斗气化翼");
//创建Gson对象实例
Gson gson = new Gson();
//toJson方法可以把java对象转换成为json字符串
String person JsonString = gson.toJson(person);
System.out.println(personJsonString);
//fromJson把json字符串转换回Java对象
//第一个参数是json字符串
//第二个参数是转换回去的Java对象类型
Person person1 = gson.fromJson(personJsonString,Person.class);
System.out.println(person1);
}
创建一个PersonListType类继承于,gson.ar包下的TypeToken类
com.google.gson.reflect.TypeToken;
/**
* 这里的泛型为要从json字符串转化成的类的类型
* @Author beiqixing
* @Description
* @Date 2021/9/16 19:30
*/
public class PersonListType extends TypeToken<ArrayList<Person>> {
}
在json字符串转化为list时使用new PersonListType().getType()
@Test
publicvoidtest2(){
List<Person> personList = new ArrayList<>();
personList.add(new Person(1,"窦俊"));
personList.add(new Person(2,"曹强"));
Gsongson=new Gson();
//把List转换为json字符串
String personListJsonString = gson.toJson(personList);
System.out.println(personListJsonString);
//把json字符串转化为list
List<Person> list = gson.fromJson(personListJsonString,new PersonListType().getType());
System.out.println(list);
Person person = list.get(0);
System.out.println(person);
}
采用匿名内部类的方法可以避免写一个新的类再去实例化的操作,可在json字符串转化为map对象时使用
new TypeToken<HashMap<Integer,Person>>(){
}.getType()
@Test
publicvoidtest3(){
Map<Integer,Person> personMap = new HashMap<>();
personMap.put(1,new Person(1,"俊哥好帅"));
personMap.put(2,new Person(2,"强哥也好帅"));
Gson gson = new Gson();
//把map集合转换成为json字符串
String personMapJsonString = gson.toJson(personMap);
System.out.println(personMapJsonString);
//Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType());
Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType());
System.out.println(personMap2);
Personp = personMap2.get(1);
System.out.println(p);
}