之前写过一篇关于JSON的博客,里面简单的介绍了JSON的基本概念以及几个组成要素以及Gson的使用,今天就来简单的实现一下通过Gson实现任意对象与JSON 字符串之间的转换:
1,对象与JSON字符串之间互相转换
(1)普通对象转JSON字符串
Person p1=new Person(26,"why","male");
Gson gson =new Gson();
String gsonStr=gson.toJson(p1);
System.out.println("Object to Json String:"+gsonStr);
(2)JSON字符串转普通对象
方式1:
Person p2=gson.fromJson(gsonStr,Person.class);
System.out.println("Json String to Object:"+p2.toString());
方式2:
Type type1 = new TypeToken<Person>() {
}.getType();
Person p2=gson.fromJson(gsonStr, type1);
System.out.println("Json String to Object:"+p2.toString());
(3)集合对象转JSON字符串
List<Person> selfDefElementlist=new ArrayList<>();
selfDefElementlist.add(new Person(26,"why","male"));
selfDefElementlist.add(new Person(24,"jr","female"));
selfDefElementlist.add(new Person(3,"love","male"));
String list2ToStr=gson.toJson(selfDefElementlist);
System.out.println("Self Define Element List to Json String:"+list2ToStr);
(4)JSON字符串转集合对象
方式1:
List<Person> selfDefElementlist1=new ArrayList<>();
selfDefElementlist1=gson.fromJson(list2ToStr, selfDefElementlist1.getClass());
System.out.println("Json String to Self Define Element List :"+selfDefElementlist1.toString());
方式2:
Type type3 = new TypeToken<List<Person>>() {
}.getType();
List<Person> selfDefElementlist2=gson.fromJson(list2ToStr, type3);
System.out.println("Json String to Self Define Element List :"+selfDefElementlist2.toString());
对于JSON转集合对象,建议使用第二种方式,第一种方式有可能会导致数据类型发生变化,参见如下日志:
附:
public class Person {
int age;
String name;
String sex;
public Person(int age, String name, String sex) {
super();
this.age = age;
this.name = name;
this.sex = sex;
}
public Person(Person p) {
this.age = p.age;
this.name = p.name;
this.sex = p.sex;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + ", sex=" + sex + "]";
}
}
注:欢迎扫码关注