![](/img/trans.png)
[英]Java: Deserialize a json to object in rest template using “@class” in json -SpringBoot
[英]Make JSON payload fields case insensitive when mapping to Java Object in REST API developed using SpringBoot
我正在使用 SpringBoot 应用程序开发 REST API。 在这里,我想在映射到 Java Object 时使有效负载 (JSON) 中的字段不区分大小写。下面是我的代码。
有效载荷
{"limit":1,"name":"MATTHEW PHILLIPS"}
请求 Object
private String limit;
private String name;
public String getLimit() {
return limit;
}
public void setLimit(String limit) {
this.limit = limit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
我 map JSON payload 到 java Object 直接使用@RequestBody
Spring 注解。 我的问题是如何将 java Object 到 map 设置为忽略大小写的字段。
问候,拉凯什
好吧,如果它的Spring Boot应用程序你可以在你的application.properties
文件中有这个: spring.jackson.mapper.accept_case_insensitive_properties=true
或者如果你使用yaml:
spring:
jackson:
mapper:
accept_case_insensitive_properties: true
我最近通过Annotation配置找到了一个解决方案:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
public class Config {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
return mapper;
}
}
我正在使用这些依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.6.5</version>
</dependency>
祝好运。
对我来说,最简单的解决方案是在我的 requestBody 的 class 定义中使用 com.fasterxml.jackson.annotation.JsonFormat 注释(我使用的是 2.5.0 spring-boot,但它是一个 fasterxml 注释,因此它可能不相关):
@JsonFormat(with = {JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.