首页 文章

JsonIgnoreProperties无法使用spring boot

提问于
浏览
0

当前的Spring启动示例应用程序已创建 . 在请求中,如果有任何未知字段即将到来,那么我们需要抛出错误 .

为了这

@JsonIgnoreProperties(ignoreUnknown = false)

正在使用注释 . 但是,当我打网址时,它无法正常工作 .

请查找以下代码段:

import java.io.IOException; import java.util.List; import javax.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.journaldev.bootifulmongodb.dal.UserDAL; import com.journaldev.bootifulmongodb.dal.UserRepository; import com.journaldev.bootifulmongodb.model.CardInfo; import com.journaldev.bootifulmongodb.model.User; @RestController @RequestMapping(value =“/”)@JsonIgnoreProperties(ignoreUnknown = false)public class UserController {private final Logger LOG = LoggerFactory.getLogger(getClass());私有最终UserRepository userRepository;私人最终UserDAL userDAL; public UserController(UserRepository userRepository,UserDAL userDAL) @RequestMapping(value =“/ create”,method = RequestMethod.POST,consume = MediaType.APPLICATION_JSON_VALUE,produce = MediaType.APPLICATION_JSON_VALUE)public User addNewUsers(@RequestBody @Valid User user)throws JsonProcessingException {LOG.info(“Saving user” . “); CardInfo cardInfo = new CardInfo();
cardInfo.setCardId( “12345678901”); user.setCardInfo(cardInfo);
ObjectMapper mapper = new ObjectMapper();

String jsonString = mapper.writeValueAsString(cardInfo);
user.setCardInfo1(jsonString); userDAL.getAllUsers();返回
userRepository.save(用户); }

请按以下方式查找示例Pom:http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0

<groupId>com.journaldev.spring</groupId>
<artifactId>spring-boot-mongodb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>spring-boot-mongodb</name>
<description>Spring Boot MongoDB Example</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1 回答

  • 2

    你有几个选择

    • @JsonIgnoreProperties 放在你反序列化的类而不是Spring控制器中 . 但是,我看到你要反序列化的类是 com.journaldev.bootifulmongodb.model.User 所以很可能你不能修改它 .

    • 配置对象映射器实例:

    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
    
    • 自定义Spring Boot的Jackson Object Mapper - 通过设置正确的环境属性:

    spring.jackson.deserialization.fail-上未知的属性=真

    有关详细信息,请参阅section 76.3 of Spring Boot's reference .

相关问题