1. 程式人生 > >Java 用Jackson進行json和object之間的轉換(並解決json中存在新增多餘欄位的問題)

Java 用Jackson進行json和object之間的轉換(並解決json中存在新增多餘欄位的問題)

1、新增jackson庫

如果是maven工程,需要在pom.xml中新增jackson的依賴:

			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>2.8.3</version>
			</dependency>

用到jackson的類中需要引入:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;

2、json轉object

比如本例中是YourJson(json型別字串)需要轉化為YourClass類(自定義的類)的例項:

ObjectMapper objectMapper = new ObjectMapper();
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
如果json中有新增的欄位並且是YourClass類中不存在的,則會轉換錯誤

1)需要加上如下語句:

這種方法的好處是不用改變要轉化的類,即本例的YourClass。(如果YourClass不是你維護的,或者不可修改的,可以用這個方法)

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
2)jackson庫還提供了註解方法,用在class級別上:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {
    ...
}
3、object轉json

本例中是YourClass物件需要轉化為json:

import com.fasterxml.jackson.databind.ObjectMapper;

ObjectMapper objectMapper = new ObjectMapper();
YourClass yourClass = new YourClass();
String json = objectMapper.writeValueAsString(yourClass);