返回响应时驼峰命名约定不起作用

问题描述 投票:0回答:1

当变量名遵循立即驼峰大小写规则时,驼峰命名约定是否无法返回响应?

变量名称示例,例如

tId
iPhone
bLaBlAbLa
testName

复制问题的步骤

  1. 创建一个 spring-boot-starter-web
  2. 创建文件如下:

TestModel.java

package com.test.IssueWithName.model;

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public class TestModel {

    private int tId;
    private String iPhone;
    private int bLaBlAbLa;
    private String testName;

}

TestController.java

package com.test.IssueWithName.controller;

import com.test.IssueWithName.model.TestModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("test")
    public TestModel responseNamingIssue() {
        return new TestModel(1, "15 ultra super duper pro max", 4, "testingNameIssues bla bla");
    }

}

IssueWithNameApplication.java
(主课)

package com.test.IssueWithName;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class IssueWithNameApplication {

    public static void main(String[] args) {
        SpringApplication.run(IssueWithNameApplication.class, args);
    }

}

击中时有反应

localhost:<port>/test

{
    "testName": "testingNameIssues bla bla",
    "tid": 1,
    "iphone": "15 ultra super duper pro max",
    "blaBlAbLa": 4
}

问题:

testName
正确遵循了camelCasing规则,但我猜
tId
iPhone
bLaBlAbLa
命名变量在响应中失败了camelCasing。
tId
iPhone
bLaBlAbLa
分别变成了
tid
iphone
blaBlAbLa
。 如果我在某个地方错了,请纠正我。感谢您的阅读。

java spring jackson naming-conventions camelcasing
1个回答
0
投票

Spring Boot 使用 Jackson 作为默认的序列化/反序列化库。

Jackson 序列化 POJO 时,会查找字段的默认 getter(带有前缀的方法用于布尔值,get 用于其他类型)。

您看到的问题是由于 Jackson 使用 Java Bean 命名约定来确定 Java 类中的 JSON 属性。

之前也提出过类似的问题。请检查下面提到的链接以获取与此问题相关的更多详细信息。 如果前导驼峰式单词只有一个字母长,为什么 Jackson 2 无法识别第一个大写字母? 回到你的问题,你可以通过在字段上使用 @JsonProperty 来解决这个问题,而不是使用 Lombok @Getter 注释来生成 getter 方法。它是 Jackson 库注释,您可以使用它来自定义 JSON 属性名称。 现在你的模型类将如下所示:

@AllArgsConstructor

公共类测试模型{

@JsonProperty
private int tId;

@JsonProperty
private String iPhone;
@JsonProperty
private int bLaBlA;
@JsonProperty
private String testName;

}

进行这些更改后,您将得到如下响应:

{ “tId”:1, “iPhone”:“我的电话”, “bLaBlA”:8, “测试名称”:“测试” }

我已经在本地测试了上面的代码并且工作正常。希望这可以帮助 快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.