JAVA中如何使实体对象与Json对象的数据相互转换

发布时间:

Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛。在这里分享方法给大家。

JAVA中如何使实体对象与Json对象的数据相互转换

依赖fastjson

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

新建一个实体类

package Json;

public class Person {
private String name;
private Integer age;

public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

实体与json对象相互转换

public class jsontest {

@Test
public void test1(){
System.out.println("+++++++++++++java实体与json对象相互转换++++++++++++++");
Person person1 = new Person("zhangsan", 12);
System.out.println("实体对象:"+ person1);

Object person1_json = JSONObject.toJSON(person1);
System.out.println("实体转成的json对象:"+ person1_json);

String person1_json_s = person1_json.toString();
System.out.println("json对象转成json字符串:"+person1_json_s);

Person person1_1 = JSONObject.parseObject(person1_json_s, Person.class);
System.out.println("json转成的实体:"+person1_1);
}
}

输出:

+++++++++++++java实体与json对象相互转换++++++++++++++
实体对象:
Person{name='zhangsan', age=12}
实体转成的json对象:
{"name":"zhangsan","age":12}
json对象转成json字符串:
{"name":"zhangsan","age":12}
json转成的实体:
Person{name='zhangsan', age=12}

实体List与json对象相互转换

public class jsontest {

@Test
public void test1(){

System.out.println("++++++java实体类型的List与json对象相互转换++++++++++++");
List<Person> personlist1 = new ArrayList<>();
personlist1.add(new Person("lisi",13));
personlist1.add(new Person("wangwu",14));
System.out.println("Person实体类型的List:"+personlist1);

Object personlist1_json = JSONObject.toJSON(personlist1);
System.out.println("Person实体类型的List转成的json对象:"+personlist1_json);

String personlist1_json_s = personlist1_json.toString();
System.out.println("json对象转成json字符串:"+personlist1_json_s);

List<Person> personlist1_1 = JSONObject.parseArray(personlist1_json_s, Person.class);
System.out.println("json字符串转成的Person实体类型的List:"+personlist1_1);
}
}

输出:

++++++java实体类型的List与json对象相互转换++++++++++++
Person实体类型的List:
[Person{name='lisi', age=13}, Person{name='wangwu', age=14}]
Person实体类型的List转成的json对象:
[{"name":"lisi","age":13},{"name":"wangwu","age":14}]
json对象转成json字符串:
[{"name":"lisi","age":13},{"name":"wangwu","age":14}]
json字符串转成的Person实体类型的List:
[Person{name='lisi', age=13}, Person{name='wangwu', age=14}]

 实体Map与json对象相互转换

在json转实体类型的Map过程中需要使用new TypeReference<>(){},定义反序列化的类型

public class jsontest {

@Test
public void test1(){

System.out.println("+++++++++java实体类型的Map与json对象相互转换+++++++++++++++");
Map<Integer,Person> personmap1 = new HashMap<>();
personmap1.put(1,new Person("zhaoliu",16));
personmap1.put(2,new Person("tianqi",17));
System.out.println("Person实体类型的Map:"+personmap1);

Object personmap1_json = JSONObject.toJSON(personmap1);
System.out.println("Person实体类型的Map转成的json对象:"+personmap1_json);

String personmap1_json_s = personmap1_json.toString();
System.out.println("json对象转成json字符串:"+personmap1_json_s);

HashMap<Integer, Person> personmap1_1 =
JSONObject.parseObject(personmap1_json_s, new TypeReference<HashMap<Integer, Person>>() {});
System.out.println("json字符串转成的Person实体类型的Map:"+personmap1_1);
}
}

输出:

+++++++++++++++java实体类型的Map与json对象相互转换+++++++++++++++++++++
Person实体类型的Map:
{1=Person{name='zhaoliu', age=16}, 2=Person{name='tianqi', age=17}}
Person实体类型的Map转成的json对象:
{"1":{"name":"zhaoliu","age":16},"2":{"name":"tianqi","age":17}}
json对象转成json字符串:
{"1":{"name":"zhaoliu","age":16},"2":{"name":"tianqi","age":17}}
json字符串转成的Person实体类型的Map:
{1=Person{name='zhaoliu', age=16}, 2=Person{name='tianqi', age=17}}