2017-01-18 9 views
0

を使用してJSONにHashMapを持つオブジェクトをシリアル化しながら、私はジャクソンを使用してJSONにシリアライズしようとしているクラスがあります。マッピング例外ジャクソン

class A { 
    String someString; 
    Map<String, Long> someMap; 
} 

を私は次のコードを使用してシリアル化しています:

mapper.writeValueAsString(a); 
クラスAのインスタンスである

私は、この例外になっています

私は異なるデフォルトの入力を有効にしようとしましたが、それは役に立たなかった。

+2

あなたのバグは他の場所だと思います。 'someMap'はどこに置かれますか? – shmosel

答えて

1

これは、Longの代わりにDoubleがマップに含まれているために発生します。通常は、警告を無視したり、リフレクションを使用したりした結果です。これは、再現するために、かなり簡単です:

A a = new A(); 
a.someMap = new HashMap<>(); 
((Map)a.someMap).put("bar", 1.0); 
new ObjectMapper().writeValueAsString(a); 

com.fasterxml.jackson.databind.JsonMappingException:java.lang.Doubleのは参照チェーンを通じてがjava.lang.Long(にキャストすることはできません。[ "someMap"] - > java.util.HashMap ["bar"])

関連する問題