Сериализация запроса на JSON PATCH с Джексоном - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Java Spring Boot в качестве шлюза к API с конечной точкой PATCH, которая использует JSON Patch. Можно ли использовать Джексона для сериализации документа JSON Patch, если есть разные типы? Например, если я хочу, чтобы в моем документе JSON Patch было 3 операции, значения которых имеют разный тип, можно ли Джексону сериализовать каждую операцию тремя различными способами?

[
    {
        "op": "replace",
        "path": "/name",
        "value": "foo bar"
    },
    {
        "op": "replace",
        "path": "/tags",
        "value": [
           "done",
           "complete"
       ]
    },
    {
        "op": "replace",
        "path": "/age",
        "value": 25
     },
]

В настоящее время я использую аннотацию @RequestBody, чтобы десериализовать запрос, полученный от моего веб-приложения.

// Controller
@PatchMapping(
  path = "/images/{imageId}",
  consumes = MediaType.APPLICATION_JSON_VALUE,
  produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<ResponseEntity<String>> updateImage(
  @RequestBody @NotBlank List<UpdateOp> request) {
  return imageService.updateImage(request);
  }

// Image Service 
public Mono<ResponseEntity<String>> updateImage(List<UpdateOp> request) {
...
.body(BodyInserters.fromObject(objMapper.writeValueAsBytes(request)))
...
}

Я новичок в Spring Boot, поэтому открыт для предложений и альтернативных решений.

...