Как сопоставить ключ к значению объекта в Джексоне? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть объект 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;

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...