Я использую игровой фреймворк для своего проекта для создания методов API. Мне нужно создать API метода POST, поэтому я использую PostMan для этой цели. Я хотел обновить существующий документ в elasticsearch. Итак, я извлек объект JSON из тела моего запроса как JsonNode:
JsonNode asJson = request.body().asJson();
, поскольку мое тело ввода JSON также содержит некоторые вложенные поля, поэтому я проанализировал этот объект JsonNode для своего объекта класса продукта с использованием парсера GSON:
Product fromJson = JsonParserUtils.fromJson(asJson, Product.class);
класс продукта построен следующим образом:
public class Product
{
//non-nested fields
private String color;
//nested fields
private List<nestedFields> searchTerms;
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color=color;
}
public List<nestedFields> getSearchTerms() {
return searchTerms;
}
public void setSearchTerms(List<nestedFields> searchTerms) {
this.searchTerms = searchTerms;
}
}
, а мой класс nestedFields построен следующим образом:
public class nestedFields
{
private String name;
public void setName(String name)
{
this.name = name;
}
public String getName() {
return name;
}
}
Теперь у меня есть объект from Json Product, который анализируется из JsonNode через библиотеку GSON. Моя цель - преобразовать это из объекта Json в карту, как этого добиться, поскольку использование простых методов получения и установки не подходит для вложенных полей, где у меня есть массив объектов json. Я также пробовал objectMapper на объекте Product,
Map<String,Object> jsonMap= objectMapper.convertValue(product,Map.class);
, но это не объединяет мой предыдущий документ с этой новой картой, вместо этого он перезаписывает предыдущий документ картой, сформированной моим ObjectMapper.