Как преобразовать объект (который сформирован в результате синтаксического анализа парсером GSON из узла JSON) в карту в java? - PullRequest
0 голосов
/ 18 июня 2020

Я использую игровой фреймворк для своего проекта для создания методов 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.

...