Jackson使用convertValue報錯:java.lang.NoSuchMethodError 解決方法

使用jackson將實體對象轉換成map的時候報錯:

public static void main(String[] args) {
    ObjectMapper mapper = new ObjectMapper();

    Student obj = new Student();
    obj.setName("mkyong");
    obj.setAge(34);
    obj.setSkills(Arrays.asList("java", "node"));

    // object -> Map
    Map<String, Object> map = mapper.convertValue(obj, Map.class);
    logger.info(JSON.toJSONString(map));
}

報錯信息如下:java.lang.NoSuchMethodError 

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.json.JsonWriteContext.createChildObjectContext(Ljava/lang/Object;)Lcom/fasterxml/jackson/core/json/JsonWriteContext;
 at com.fasterxml.jackson.databind.util.TokenBuffer.writeStartObject(TokenBuffer.java:720)
 at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:174)
 at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
 at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
 at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4180)
 at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4133)

原因:升級了jackson 版本導致的,之前用的 2.6.3 升級到 2.10以上後出現了這個問題。

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

升級後執行失敗了。 

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

 正確的引用方法如下,注意是3個同時引入,這樣纔不會丟失方法。

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

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

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.11.1</version>
</dependency>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章