У меня есть объект JSON, который выглядит следующим образом:
{"name":
{"description": "test",
"another_field": 1,
...
}
...
}
Я хочу иметь возможность сопоставить JSON с объектом карты, таким как Map<String, Specification>
, где объект спецификации может сопоставить имена атрибутов JSON сдругие имена, в настоящее время, когда я конвертирую его с Джексоном, я получаю только имена JSON.Мой текущий класс преобразователя ниже:
public class HashMapConverter implements AttributeConverter<Map<String, Specification>, String> {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public String convertToDatabaseColumn(Map<String, Specification> techSpecs){
String technicalSpecs = null;
try {
technicalSpecs = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(techSpecs);
} catch (final JsonProcessingException e) {
System.out.println(e);
}
return technicalSpecs;
}
@Override
public Map<String, Specification> convertToEntityAttribute(String techSpecJSON){
TypeReference<Map<String, Specification>> mapType = new TypeReference<Map<String, Specification>>(){};
Map<String, Specification> techSpecs = null;
try {
techSpecs = objectMapper.readValue(techSpecJSON, mapType);
} catch (final IOException e) {
System.out.println(e);
}
return techSpecs;
}
}
, а класс Spec выглядит следующим образом:
public class Specification {
@JsonProperty("description")
public String description;
@JsonProperty("another_field")
public Integer version;
...
}