我在Java中有一个DTO类型的类,它映射JSON类型的输入参数.这适用于DTO中与JSON中的字段名称匹配的字段名称.但不同的名称约定(Java名称约定和JSON名称约定),数据的类型为空(即startDate).我try 了网上建议的各种解决方案,比如使用@JsonProperty注释,但都没有效果.

我的JSON输入:

{
    "latitude": 52.52,
    "longitude": 13.41,
    "start_date": "2023-05-08",
    "end_date": "2023-05-22"
}

我的DTO课程:

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class InputParametersDTO {

    private float latitude;
    private float longitude;
    @JsonProperty("start_date")
    private String startDate;
    @JsonProperty("end_date")
    private String endDate;
    
}

我的控制器:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.time.LocalDateTime;

@RestController
@RequestMapping("api/v1/demo")
public class OpenMeteoController {


    @GetMapping
    @ResponseBody
    public ResponseEntity<?> getData(InputParametersDTO inputParametersDTO) throws Exception
    {
        float lat = inputParametersDTO.getLatitude(); // 52.52
        String endDate = inputParametersDTO.getEndDate(); // null
// DO OTHER STUFF

    }

}

推荐答案

试试下面的,对我来说很管用.

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class InputParametersDTO {

    private float latitude;
    private float longitude;
    @JsonProperty(value = "start_date")
    private String startDate;
    @JsonProperty(value = "end_date")
    private String endDate;
    
}

Java相关问答推荐

如何使用jooq generator将表名和列名映射为人类可读的?

了解Android Studio中的调试器输出

如果一个子类没有构造函数,超类也没有构造函数,那么为什么我可以构造子类的实例呢?

CAMEL 4中的SAXParseException

通过合并Akka Streams中的多个慢源保持订购

在运行MVN测试时,为什么构建失败,并显示了java.lang.ClassNotFoundException:java.net.http.HttpResponse?

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

如何在EXCEL单元格中添加形状和文本

使用Jolt将字段转换为列表

如何使用log4j2(Json)记录由";异常引起的所有";?

在Java 15应用程序中运行Java脚本和Python代码

使用Jackson库反序列化json

允许同时执行两个方法,但不能同时执行这两个方法

Spring Framework6.1中引入的新RestClient是否有适合于测试的变体,就像RestTemplate和TestRestTemplate一样?

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

Java集合:NPE,即使没有添加空值

Win32函数的JNA绑定DwmGetColorizationColor返回E_INVALIDARG错误

将BlockingQueue+守护程序线程替换为执行器