Как удалить элемент из объекта JSON в Play Framework

1

В Play Framework у нас есть вспомогательный метод Json.toJson() для генерации JsonNodes из тела запроса или запросов БД, но я не знаю, как удалить определенные поля из объекта после его создания.

Теги:
playframework
jackson

1 ответ

2

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);


Не забудьте проверить остальную часть документации/учебников, поскольку Джексон - сложная библиотека, и вы, возможно, захотите обучить себя этому вопросу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню