В Play Framework у нас есть вспомогательный метод Json.toJson()
для генерации JsonNodes
из тела запроса или запросов БД, но я не знаю, как удалить определенные поля из объекта после его создания.
Play использует FasterXML/jackson под капотом.
Например, скажем, что вы хотите получить полезную нагрузку из запроса. Вы вызываете request(). Body(). AsJson(), в свой контроллер и получаете JsonNode.
JsonNode не имеет возможностей вставки, но ObjectNode.
1. Создание ObjectNode (показывая 2 общих способа сделать это):
а. Кастинг в ObjectNode
ObjectNode json = (ObjectNode) request().body().asJson();
б. Использование ObjectMapper (дает вам больше возможностей управления, например, функции сериализации)
ObjectMapper mapper = new ObjectMapper();
//set serialization features in cases where you need them
mapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
mapper.setSerializationInclusion(Include.NON_NULL);
ObjectNode json = mapper.createObjectNode();
2. Добавление/удаление элементов (связанный API-интерфейс ObjectNode, чтобы вы могли проверить все доступные методы)
json.remove("fieldName");
json.put("anotherFieldName", "yesWeCan")
.put("canWeDoBoolean", true)
.put("howAboutNumbers", 1234567890);
Не забудьте проверить остальную часть документации/учебников, поскольку Джексон - сложная библиотека, и вы, возможно, захотите обучить себя этому вопросу.