【发布时间】:2013-07-18 00:08:30
【问题描述】:
我在 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
@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"}
【问题讨论】:
-
你使用 maven 或类似的东西,还是只使用 NetBeans “依赖系统”?
-
没有 Maven,只有 NetBeans。
-
确保你的类路径中没有 Jackson1 (codehaus) 和 Jackson2 (fasterxml)。
标签: spring-mvc jackson