Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的java重命名json属性名_Java_Json_Spring Boot_Jackson_Gson - Fatal编程技术网

奇怪的java重命名json属性名

奇怪的java重命名json属性名,java,json,spring-boot,jackson,gson,Java,Json,Spring Boot,Jackson,Gson,在Soring引导服务器端,我有一个类似以下的类: class Questionnaire { private string loaderClass = ""; public String getClassLoaderName(){return this.loaderClass;} public void setClassLoaderName(String val){this.loaderClass = val;} } 我有一个rest端点,它简单地将上述类类型返回

在Soring引导服务器端,我有一个类似以下的类:

class Questionnaire {
    private string loaderClass = "";

    public String getClassLoaderName(){return this.loaderClass;}

    public void setClassLoaderName(String val){this.loaderClass = val;}
}
我有一个rest端点,它简单地将上述类类型返回给来自角度端的请求

在我的angular客户端,我检索上面定义的问卷的json版本。这是我的期望:

{
  "loaderClass": "someValue"
}
这就是我得到的:

{
  "classLoaderName": "someValue"
}
谁给它改名了?它是如何改名的?为了解决这个问题,我只需重命名setter和getter以匹配Java端的属性名


这很奇怪。

杰克逊将其重命名。您的getter名为
getClassLoaderName
,Jackson的getter将去掉
get
部分,并将其余部分放低。如果要更改名称,可以使用如下注释getter:

@JsonProperty("loaderClass")
public String getClassLoaderName(){return this.loaderClass;}
如果要更改命名策略本身,可以将注释与其中一个静态
PropertyNamingStrategy
实现结合使用,以更改整个模型类的策略:

@JsonNaming(PropertyNamingStrategy.KebabCaseStrategy.class)
class Questionnaire {
   ...
}

或者像这样配置您的
ObjectMapper
对象映射器.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE)以更改所有模型的策略。

简单地说,为什么不重命名setter/getter以匹配字段名?为什么要标记spring boot、Jackson和Gson?如果有的话,你正在使用哪一种?你如何使用它们?你为什么觉得这很奇怪?你认为这个名字应该是什么?为什么?如果您已经知道如何解决该问题(以及其原因(getter/setter)),问题出在哪里?@Sotirios Delimanolis我问这个问题是因为我不知道行为背后的原因。我们只能猜测,而无需您向我们展示服务器是如何实现的。重命名setter和getter以匹配属性名称似乎表明您知道行为背后的原因。我如何指定我更喜欢Gson而不是Gson杰克逊。Jackson是spring boot的默认Json工具吗?是的,Jackson是spring boot附带的默认Json(反)序列化程序。只需将Gson添加到项目依赖项中,就可以覆盖它。Spring引导自动配置将检测类路径上的Gson,并使用合理的默认值对其进行配置。