default-view-inclusion无法正常工作

时间:2017-08-04 16:04:31

标签: java json spring

大家好,我一直在查看与此问题相关的帖子,但我没有成功解决它。实际上我正在使用带有jackson和其他API的spring boot 1.6。当我在attribut上使用@JsonView时,它包含在使用Advanced Rest Client生成的最终Json中。但是没有@JsonView的attributs不包含在序列化中。我发现默认情况下“spring.jackson.mapper.default-view-inclusion”为“true”我尝试按照此链接How to get value of array inside another array in php?,但它不起作用。我主要关注的是创建视图而不必在所有视图中包含的attribut上使用@JsonView,因此只需使用@Json视图来获取依赖于视图的attributs,但它不起作用。这是我的实体之一

public class Person  implements Serializable {

    private static final long serialVersionUID = 1151758997545437061L;

    private String firstName;

    private String lastName;

    @JsonView(UserViews.SimpleView.class)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date birthDate;

    @JsonView(UserViews.SimpleView.class)
    private String birthPlace;

// getters and setters
}

这是我的控制器

 @RestController
    @RequestMapping(value = "/")
    public class PersonController {


        private Logger logger= org.slf4j.LoggerFactory.getLogger(PersonController.class);

        @Autowired
        private PersonService<Person, PersonDao<Person>> personService;

        public PersonService<Person, PersonDao<Person>> getPersonService() {
            return personService;
        }

        public void setPersonService(PersonService<Person, PersonDao<Person>> personService) {
            this.personService = personService;
        }

        //-------------------Retrieve All Person--------------------------------------------------------
        @GetMapping(value = "/person")
    @JsonView(UserViews.SimpleView.class)
        public ResponseEntity<List<Person>> findAllPerson() throws Exception {
            logger.error("##############################Loading person################################");
            List<Person> listPersons = personService.findAll();
            if (listPersons.isEmpty()) {
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);//You many decide to return HttpStatus.NOT_FOUND
            }
            return new ResponseEntity<>(listPersons, HttpStatus.OK);
        }

        //-------------------Retrieve filtered list Person--------------------------------------------------------
        @PostMapping(value = "/person/filtered")
    @JsonView(UserViews.RoleView.class)
        public ResponseEntity<List<Person>> findFilterperson() throws Exception {
            List<Person> listPersons = personService.findAll();
            if (listPersons.isEmpty()) {
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);//You many decide to return HttpStatus.NOT_FOUND
            }
            return new ResponseEntity<>(listPersons, HttpStatus.OK);
        }
    }

我甚至将它添加到我的application.properties

spring.jackson.mapper.default-view-inclusion:true

我希望在我的所有视图中都有firstName和LastName,但我没有得到这两个字段

0 个答案:

没有答案