您的位置:首页 > Web前端 > JavaScript

Jackson实现json的序列化反序列化

2017-11-03 10:55 507 查看
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 +
'}';
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: