gpt4 book ai didi

spring-mvc - 如何设置/配置 Jackson 注释以在 Spring MVC 中工作?

转载 作者:行者123 更新时间:2023-12-01 09:29:13 24 4
gpt4 key购买 nike

我在 Spring MVC 3.1.1 中继承了一个项目,我需要使用 Jackson 将对象序列化为 JSON。我有一个像这样的对象类:

public class User {
Integer id;
String name;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

还有这样的 Controller :

@Controller
@RequestMapping(value = "/home")
public class homeController {
@RequestMapping(value = "/")
public @ResponseBody User home() {
User user;
user = new User();

user.setId(1);
user.setName("Drew");

return user;
}
}

导航到/home 我得到:

{"id":1,"name":"Drew"}

太好了,这是第一步。现在,如果我想忽略“id”参数,Jackson 文档说我应该使用 @JsonIgnore 注释。我遇到的问题是 NetBeans 找不到要为 Jackson 导入的任何注释包,因此我无法使用这些注释。我尝试下载 Jackson 2.2 jar 并将它们添加到我的项目中(然后允许我导入注释),但是当我这样做时 @JsonIgnore 注释不起作用。

我怀疑我缺少 Spring MVC 中的一个 jar 文件,或者我需要在项目的 XML 文件中配置某些内容,我将如何确定是否是这种情况(或两者都不是)?我对 Java 比较陌生,而且我以前从未使用过 Spring,所以如果有一些我不知道您需要的其他信息会有所帮助,请询问,我会尽力找到它。提前感谢您提供的任何帮助!

编辑:

为了澄清,我尝试过使用这样的注释:

public class User {
Integer id;
String name;

@JsonIgnore
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@JsonProperty("userName")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

像这样:

@JsonIgnoreProperties({"id"})
public class User {
Integer id;
String name;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@JsonProperty("userName")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

而且返回的 JSON 总是一样的:

{"id":1,"name":"Drew"}

最佳答案

您的类路径中缺少 Jackson 依赖项。您需要在以下 jars 上添加依赖项:

  1. jackson 核心
  2. jackson 数据绑定(bind)
  3. jackson 注解

添加了这些依赖项后,您可以通过在 getter 上放置 @JsonIgnore 注释来防止字段被序列化,如下所示:

public class User {
Integer id;
String name;

@JsonIgnore
public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

关于spring-mvc - 如何设置/配置 Jackson 注释以在 Spring MVC 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17733667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com