#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}