在Jackson中序列化/反序列化自定义Map

我有一个非常简单的Map我希望在Jackson中序列化和反序列化,但我无法让它工作。

我尝试过以下方法:

@JsonSerialize(keyUsing=TurnKeySerializer.class) @JsonDeserialize(keyUsing = TurnKeyDeserializer.class) Map publicTurns = new TreeMap(); @JsonIgnoreProperties(ignoreUnknown = true) @Data //Creates Getter/Setter etc public class TurnKey implements Comparable { private final int turnNumber; private final String username; public TurnKey(int turnNumber, String username) { this.turnNumber = turnNumber; this.username = username; } @Override public int compareTo(TurnKey o) { int v = Integer.valueOf(turnNumber).compareTo(o.getTurnNumber()); if (v != 0) { return v; } return username.compareTo(o.getUsername()); } @Override public String toString() { return "{" + "turnNumber:" + turnNumber + ", username:'" + username + "'" + "}"; } public class TurnKeySerializer extends JsonSerializer { @Override public void serialize(TurnKey value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { if (null == value) { throw new IOException("Could not serialize object to json, input object to serialize is null"); } StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(writer, value); gen.writeFieldName(writer.toString()); } } public class TurnKeyDeserializer extends KeyDeserializer { private static final ObjectMapper mapper = new ObjectMapper(); @Override public TurnKey deserializeKey(String key, DeserializationContext ctxt) throws IOException, JsonProcessingException { return mapper.readValue(key, TurnKey.class); } } 

但我得到一个例外

com.fasterxml.jackson.databind.JsonMappingException:无法从START_ARRAY令牌中反序列化java.util.LinkedHashMap的实例