【发布时间】:2017-11-29 15:24:02
【问题描述】:
我有一个 RestController 向用户发回一个 Film 对象列表:
@RestController
@RequestMapping("/view")
public class FilmRestController {
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody List<Film> getCurrentFilms(){
FilmInfo filmInfo = new FilmInfo();
return filmInfo.getCurrentFilms();
}
}
每个 Film 对象包含两个字符串(标题、导演)和演员列表。所以相当简单的pojo。
当我在 Postman 中发出请求时,我得到以下响应:
[
{
"title": null,
"director": null,
"actors": null
},
{
"title": null,
"director": null,
"actors": null
},
{
"title": null,
"director": null,
"actors": null
},
{
"title": null,
"director": null,
"actors": null
}
]
一开始我以为这是个小故障,所以后来写了如下方法:
@RequestMapping(value = "/getOneFilm", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody Film getOneFilm(){
Film film = new Film("The Shawshank Redemption", "Frank Darabont", Arrays.asList("Tim Robbins","Morgan Freeman","Bob Gunton"));
return film;
}
果然我的回应是:
{
"title": null,
"director": null,
"actors": null
}
这里是我的电影课:
package entities;
import java.util.List;
public class Film {
private String title;
private String director;
private List<String> actors;
public Film(String title, String director, List<String> actors) {
title = this.title;
director = this.director;
actors = this.actors;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public List<String> getActors() {
return actors;
}
public void setActors(List<String> actors) {
this.actors = actors;
}
}
ResponseBody 是否有原因无法将我的对象转换为在响应中发回?我应该改变策略并手动执行我的 JSON 序列化程序吗?我
【问题讨论】:
-
你可以发布你的课程
Film吗?而当你使用注解RestController时,你就不需要ResponseBody注解了。public Film getOneFilm(){应该可以完美运行。 -
@CrazySabbath 我已将我的电影课程添加到问题中。我原以为它也很完美。但不幸的是它没有。
标签: java json spring serialization