2017-11-22 9 views
2

これは私のカスタムJSONシリアライザで、モジュールとして登録しようとしています。ここまで私がこれまで持っていたことがあります。ジャクソン登録カスタムjsonシリアライザ

public class MaptoListSerializer extends JsonSerializer<Map<String, Car<?, ?>>> { 

     @Override 
     public void serialize(Map<String, Car<?, ?>> value, JsonGenerator gen, SerializerProvider serializers)throws IOException, JsonProcessingException { 
      gen.writeObject(value.values()); 
     } 
} 

は、ここで私は(はシリアライザを追加するように見えることはできません)を作成し、私のモジュールクラスです。ここで

public class CustomModule extends SimpleModule { 

private static final long serialVersionUID = -9105685985325373621L; 

public CustomModule() { 
    super("CustomModule"); 
} 

@Override 
public void setupModule(SetupContext context) { 
    SimpleSerializers serializers = new SimpleSerializers(); 

    //THIS DOESN'T WORK . HOW DO I ADD THE SERIALIZER? 
    serializers.addSerializer(HashMap.class, new MaptoListSerializer()); 

    context.addSerializers(serializers); 
} 
} 

(これはを作品)どのようにオブジェクトマッパー、それが使用さ

mapper = new ObjectMapper(); 
mapper.registerModule(new CustomModule()); 
+0

ことができますまた、Jackson氏のObjectMapperを呼び出す方法を投稿してください。 –

+0

@NickDeFazio投稿に追加しました!ありがとう – user3100209

答えて

1

これは、この場合は、ジェネリック医薬品を必要とするHashMap、生タイプを使用する問題です。これは、ドキュメントで推奨されているように、StdSerializerにカスタムシリアライザを置くことで解決できます。そのままserialize方法を保つが、このようなコンストラクタでシリアライザを定義します。

class MaptoListSerializer extends StdSerializer<Map<String, Car<?, ?>>> { 
    MaptoListSerializer(JavaType type) { 
     super(type); 
    } 

を次にあなたが適切なJavaTypeを作成し、このコンストラクタに渡す重要なビットに:

MapType type = context.getTypeFactory() 
    .constructMapType(HashMap.class, String.class, Car.class); 
serializers.addSerializer(new MaptoListSerializer(type)); 

context.addSerializers(serializers); 
+0

あなたはどのようにデシリアライザをやりますか? 拡張StdDeserializerと同じことをしましたが、Deserizlierに追加するのは間違いです... – user3100209

+0

カスタムシリアライザは、 'Map'の' Car'値からJSON配列を生成します。これを 'List 'にデシリアライズしたいと思いますか?この場合、私のヒント: 'JavaType type = context.constructCollectionType(List.class、Car.class);'および 'deserializers.addDeserializer(List.class、new MaptoListDeserializer(type));' –

+0

残念ながらListToMapDeserializer – user3100209

関連する問題