【问题标题】:Array Type returns null in Getmapping request数组类型在 Getmapping 请求中返回 null
【发布时间】:2019-10-18 03:56:13
【问题描述】:

我有一个具有 List 类型属性的类。当我使用 post man List 执行 @GET 请求时,类型属性返回 null 而其他属性返回数据。

我正在使用 MongoRepository 实现 Springboot rest api。它有一个名为 course 的类,它有一个 List 类型,包括名为 subjectID 的字符串。我实现了一个简单的@GetMapping 请求,以查看是否所有数据都获取正常。但是在获取所有其他属性时.. subjectID 为空

@Document(collection = "courses")
public class Course {

private String name;
private String code;
private int passmark;

private List<String> subjectlist;



public Course() {}

public Course(String name, String code, int passmark, List<String> 
subjectlist) {

    this.name = name;
    this.code = code;
    this.passmark = passmark;
    this.subjectlist = subjectlist;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getCode() {
    return code;
}
public void setCode(String code) {
    this.code = code;
}
public int getPassmark() {
    return passmark;
}
public void setPassmark(int passmark) {
    this.passmark = passmark;
}
public List<String> getSubjectlist() {
    return subjectlist;
}
public void setSubjectlist(List<String> subjectlist) {
    this.subjectlist = subjectlist;
}


}



@RestController
@RequestMapping("/course")
public class CourseController {

private CourseRepository courseRepository;
private ArrayList<Course> c;
private Course cs;


public CourseController(CourseRepository courseRepository) {        
    this.courseRepository = courseRepository;
}



@GetMapping("/")
public List<Course> getAll(){
    List<Course> course = courseRepository.findAll();
    return course;
}


}

这是代码应该返回的内容

"subjects": ["sa01","ds01"]

但它会返回

"subjectlist": null

【问题讨论】:

  • 显然,您期望 Spring 神奇地认为代码中名为 subjectlist 的属性与 MongoDB 文档中名为 subjects 的属性相同。那不会发生。如果该属性名为 subjects,那么在您的 Java 代码中也将其命名为 subjects
  • 好吧。确实有效。就这么简单。我一直在寻找其他地方。感谢您的帮助

标签: java mongodb rest spring-boot


【解决方案1】:
@GetMapping("/")
public List<Course> getAll(){
    List<Course> course = courseRepository.findAll();
    return course;
}

 List<Course> course = courseRepository.findAll();

courseRepository.findAll() 也将返回course 的列表。 所以你会得到如下的o/p:

 {
   name :"x",
   code  :"y", 
   passmark:"z"
   subjectlist:[a,b,c]
}

如果您希望您的代码返回"subjects": ["sa01","ds01"],那么您必须付出额外的努力......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2017-03-12
    • 2016-03-31
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多