Получение значений @JsonProperty из HashMap

#java #json #hashmap #jackson

#java #json #hashmap #джексон

Вопрос:

У меня есть некоторый класс, использующий свойство Джексона для создания отчета в формате json

 public class Instrument {
    @JsonProperty("one")
    private String myPropOne;
    @JsonProperty("two")
    private String myPropTwo;
    @JsonProperty("three")
    private String myPropThree;
}
  

Я получаю данные для отчета из HashMap, в котором также есть другие пары ключ-значение.

 Map<String, String> myMap = new HashMap<String, String>();
myMap.put("one","test1")
myMap.put("two","test2")
myMap.put("three","test3")
myMap.put("four","test4")
myMap.put("five","test5")
  

Мне нужно только сначала от одного до трех значений с карты, другие значения используются в другом классе. В выводе я хочу ввести значение для класса инструмента. Есть ли утилита для выполнения этого чисто?

Ответ №1:

Вы можете преобразовать экземпляр класса Instrument в хэш-карту, используя ObjectMapper.convert метод следующим образом:

 public class JacksonConvert {

    static class Instrument {
        @JsonProperty("one")
        private String myPropOne;
        @JsonProperty("two")
        private String myPropTwo;
        @JsonProperty("three")
        private String myPropThree;

        Instrument(
                final String myPropOne,
                final String myPropTwo,
                final String myPropThree) {
            this.myPropOne = myPropOne;
            this.myPropTwo = myPropTwo;
            this.myPropThree = myPropThree;
        }
    }

    public static void main(String[] args) {
        final ObjectMapper objectMapper = new ObjectMapper();
        final Instrument instrument = new Instrument("a", "b", "c");
        final Map<String, String> report = objectMapper.convertValue(
                instrument,
                new TypeReference<Map<String, String>>() {});
        System.out.println(report);
    }
}
  

Вывод:

{один = a, два = b, три = c}