Отправка java.lang.Boolean через JSON (Spring Boot) - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть компонент с логическим (не примитивным логическим) атрибутом.Это связано с тем, что атрибут не релевантен для каждого экземпляра этого класса, поэтому он должен быть nullable.

Бин отправляется в виде JSON в службу REST create.Контроллер получает null вместо фактического значения.

Мой контроллер:

@RestController
@RequestMapping("/myBean")
public class MyBeanController {

    @Autowired
    private MyBeanService myBeanService;

    @PostMapping("/create" )
    public ResponseEntity createTransaction(@RequestBody MyBeanDTO myBean) {
        MyBeanDTO result = myBeanService.create(myBean);
        return new ResponseEntity(result, HttpStatus.OK);
    }
}

Мой бин:

public class MyBean  {

    . . .
    private Boolean active;
    . . .

    public Boolean getActive() { //Instead of isActive, as it's Boolean and not boolean
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }
}

Ни один из JSON, который я отправляю, не анализируетАтрибут «активный» правильно и всегда имеет значение null.Я пробовал true, "true", {"value": true}.Чего мне не хватает?

1 Ответ

0 голосов
/ 09 декабря 2018

Добавить @ JsonProperty в поле:

@JsonProperty("active")
private Boolean active

Маркерная аннотация, которая может использоваться для определения нестатического метода в качестве «установщика» или «получателя» длялогическое свойство (в зависимости от его сигнатуры) или поле нестатического объекта, которое будет использоваться (сериализовано, десериализовано) в качестве логического свойства.

Если оно не работает, удалите @RequestBody перед MyBeanDTO в createTransaction метод

...