package cn.veryjava.funny;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Json {
@Test
public void testJson() {
Employee e1 = new Employee("1", "吕永强", 88);
Employee e2 = new Employee("2", "高文君", 89);
Employee e3 = new Employee("3", "孟贝", 90);
List<Employee> employees = new ArrayList<>();
employees.add(e1);
employees.add(e2);
employees.add(e3);
Company 序列化 = new Company("1", "脚印科技", employees);
// 序列化
ObjectMapper om = new ObjectMapper();
String json = "";
try {
json = om.writeValueAsString(序列化);
} catch (JsonProcessingException e) {
System.out.println("json序列化出错");
}
System.out.println("序列化后的字符串:" + json);
// 反序列化
Company 反序列化 = null;
try {
反序列化 = om.readValue(json, Company.class);
} catch (IOException e) {
System.out.println("json反序列化出错");
}
System.out.println("反序列化后对象的toString():" + 反序列化);
// 直接打印对象属性
Assert.assertNotEquals(null, 反序列化);
System.out.println("公司ID:" + 反序列化.getId());
System.out.println("公司名称:" + 反序列化.getName());
反序列化.getEmployees().forEach(employee -> {
System.out.println("员工id:" + employee.getId());
System.out.println("员工姓名:" + employee.getName());
System.out.println("员工年龄:" + employee.getAge());
});
Map<String, Object> map = new HashMap<>();
map.put("身高", 180);
map.put("有没有对象", "有");
List<String> l = new ArrayList<>();
l.add("a");
l.add("e");
l.add("u");
map.put("list", l);
String json1 = "";
try {
json1 = om.writeValueAsString(map);
} catch (JsonProcessingException e) {
// 略
}
System.out.println("map对象序列化后的字符串:" + json1);
try {
Map<String, Object> map2 = om.readValue(json1, Map.class);
System.out.println("身高:" + map2.get("身高"));
System.out.println("有没有对象:" + map2.get("有没有对象"));
List<String> lll = (List<String>) map2.get("list");
lll.forEach(llll-> System.out.println(llll));
} catch (IOException e) {
// 略
}
}
}
class Company {
private String id;
private String name;
private List<Employee> employees;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
public Company(String id, String name, List<Employee> employees) {
this.id = id;
this.name = name;
this.employees = employees;
}
public Company() {
}
@Override
public String toString() {
return "Company{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", employees=" + employees +
'}';
}
}
class Employee {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Employee(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Employee() {
}
@Override
public String toString() {
return "Employee{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
Jackson实现json的序列化反序列化
最新推荐文章于 2024-02-16 23:39:34 发布