Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 SpringFramework ResponseBody返回具有空值的对象_Java_Json_Spring_Serialization - Fatal编程技术网

Java SpringFramework ResponseBody返回具有空值的对象

Java SpringFramework ResponseBody返回具有空值的对象,java,json,spring,serialization,Java,Json,Spring,Serialization,我有一个RestController,它将胶片对象列表发回给用户: @RestController @RequestMapping("/view") public class FilmRestController { @RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json") public @ResponseBody List<Film> getCu

我有一个RestController,它将胶片对象列表发回给用户:

@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();
    }
}
起初我认为这是一个小故障,所以后来我写了以下方法:

@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;
}
}
包实体;
导入java.util.List;
公共级电影{
私有字符串标题;
私有字符串控制器;
私人名单行动者;
公共电影(字符串标题、字符串导演、演员名单){
title=this.title;
director=this.director;
actors=this.actors;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getDirector(){
返回董事;
}
公共无效集合控制器(字符串控制器){
this.director=director;
}
公共列表getActors(){
返回演员;
}
公共角色(列出角色){
这个。演员=演员;
}
}

是否存在ResponseBy无法将我的对象转换为在响应中发回的原因?我应该改变策略并手动执行JSON序列化程序吗?I

在构造函数中,您正在更新参数而不是属性:

public Film(String title, String director, List<String> actors) {
    title = this.title;
    director = this.director;
    actors = this.actors;
}
公共电影(字符串标题、字符串导演、演员名单){
title=this.title;
director=this.director;
actors=this.actors;
}
类中的属性保持为null。将其更改为:

public Film(String title, String director, List<String> actors) {
    this.title = title;
    this.director = director;
    this.actors = actors;
}
公共电影(字符串标题、字符串导演、演员名单){
this.title=标题;
this.director=director;
这个。演员=演员;
}

你能把你的课程
电影
贴出来吗?当您使用annotation
RestController
时,不需要
ResponseBody
注释
public Film getOneFilm(){
应该可以很好地工作。@CrazySabPath我已经在问题中添加了我的电影类。我本以为它也可以很好地工作。但不幸的是它没有。谢谢。我以前从来没有把它们搞混过。不过我的眼睛有时会这样做:
public Film(String title, String director, List<String> actors) {
    this.title = title;
    this.director = director;
    this.actors = actors;
}