asg*_*ant 3 spring-mvc jackson
我在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;
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的控制器:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
导航到/ home我得到:
{"id":1,"name":"Drew"}
Run Code Online (Sandbox Code Playgroud)
太棒了,这是第一步.现在,如果我想忽略"id"参数,Jackson文档说我应该使用@JsonIgnore注释.我遇到的问题是NetBeans找不到要为Jackson导入的任何注释包,因此我无法使用注释.我尝试下载Jackson 2.2罐并将其添加到我的项目中(然后允许我导入注释),但是当我这样做时,@ 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;
}
}
Run Code Online (Sandbox Code Playgroud)
和这样:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
并且返回的JSON始终相同:
{"id":1,"name":"Drew"}
Run Code Online (Sandbox Code Playgroud)
您在类路径上缺少Jackson依赖项.您需要在以下jar中添加依赖项:
一旦添加了这些依赖项,就可以通过将@JsonIgnore注释放在getter 上来阻止字段序列化,如下所示:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7342 次 |
| 最近记录: |