对象与JSON之间相互转换 jackson-databind-2.7.0

177 阅读1分钟
jackson-databind-2.7.0
Streaming: jackson-core jar,定义了底层的streaming API和实现了Json特性。
Annotations: jackson-annotations jar,包含了标准的Jackson注解。
Databind: jackson-databind jar,实现了数据绑定和对象序列化,它依赖于streaming和annotations的包。

需要的jar:



Maven 依赖:

<properties>
<version>0.0.1-SNAPSHOT</version>
<jackson.version>2.7.0</jackson.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class DataFormatExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
User user1 = new User("lu",1);
User user2 = new User("deng",0);
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
Map<String,User> userMap = new HashMap<String, User>();
userMap.put("user1", user1);
userMap.put("user2", user2);

String userFormatJson1 = mapper.writeValueAsString(user1);//对象转JSON
String userFormatJson2 = mapper.writeValueAsString(user2);
String listFormatJson = mapper.writeValueAsString(userList);
String mapFormatJson = mapper.writeValueAsString(userMap);
System.out.println(userFormatJson1);
System.out.println(userFormatJson2);
System.out.println(listFormatJson);
System.out.println(mapFormatJson);

user1 = mapper.readValue(userFormatJson1, User.class);//JSON转对象
user2 = mapper.readValue(userFormatJson2, User.class);
userList = mapper.readValue(listFormatJson, new TypeReference<List<User>>() {});
userMap = mapper.readValue(mapFormatJson, new TypeReference<Map<String,User>>() {});
System.out.println(user1);
System.out.println(user2);
System.out.println(userList);
System.out.println(userMap);
}
}

class User implements Serializable{
private static final long serialVersionUID = 2417904826221006267L;
private String name;
private int sex;//性别;1-男,0-女

public User() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getSex() {
return sex;
}

public void setSex(int sex) {
this.sex = sex;
}

public User(String name, int sex) {
this.name = name;
this.sex = sex;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + sex;
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (sex != other.sex)
return false;
return true;
}

@Override
public String toString() {
return "User [name=" + name + ", sex=" + sex + "]";
}

---------------------
作者:phone13144830339
来源:CSDN
原文:blog.csdn.net/phone131448…
版权声明:本文为博主原创文章,转载请附上博文链接!