java - springboot生成的JSON中缺少名称标签
问题描述
我遇到了下面显示的代码问题。下面的代码生成 json 如下:
[{"id":123,"subjects":"English"},{"id":456,"subjects":"数学"}]
我们可以看到生成的 JSON 中缺少名称标签。我不明白当我返回学生列表时,生成的 json 应该包含名称标签,因为 Student 类中有一个“名称”类型的属性。请帮忙 !
PS:我已经在调试中获取了代码,我看到“students arraylist” 0 index & index 确实包含名称属性以及 id 和主题。但 JSON 不包含此属性。
休息控制器:
package com.example.demo;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
@RestController
public class Demo1Application {
@Autowired
Student student;
List<Student> students = new ArrayList<>();
@RequestMapping(value="/getStudents", method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)
public List<Student> getstudent () {
students = student.setStudent();
return students;
}
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
System.out.println("Hello");
}
}
学生豆类:
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@Component
public class Student {
int id;
String Subject;
@Autowired
@Qualifier("name")
Name name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSubjects() {
return Subject;
}
public void setSubject(String subject) {
Subject = subject;
}
public void setName(String Fname, String Mname, String Lname) {
Name nm = new Name();
name = nm.setfullname(Fname,Mname,Lname) ;
}
public Student(int id, String Subject) {
this.id = id;
this.Subject = Subject;
}
public Student() {
System.out.println("Student Object created");
}
public List<Student> setStudent() {
List<Student> Students = new ArrayList<>();
Student s = new Student ();
Student s1 = new Student ();
s.setId(123);
s.setSubject("English");
s.setName("Hemant", "123", "Mamod");
s1.setId(456);
s1.setSubject("Maths");
s1.setName("Akshay", "123", "pandey");
Students.add(s);
Students.add(s1);
return Students;
}
}
名称 Bean 类:
package com.example.demo;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@Component
@Qualifier("name")
public class Name {
String Firstname;
String Middlename;
String Lastname;
public Name() {
System.out.println("Name Object created");
}
public String getFirstname() {
return Firstname;
}
public void setFirstname(String firstname) {
Firstname = firstname;
}
public String getMiddlename() {
return Middlename;
}
public void setMiddlename(String middlename) {
Middlename = middlename;
}
public String getLastname() {
return Lastname;
}
public void setLastname(String lastname) {
Lastname = lastname;
}
public Name setfullname(String Fname, String Mname, String Lname) {
Firstname = Fname;
Middlename = Mname;
Lastname = Lname;
return this;
}
}
解决方案
问题是你Name
在Student
课堂上没有getter。请按如下方式添加吸气剂:
@Component
public class Student {
int id;
String Subject;
Name name;
/******/
public Name getName() {
return name;
}
}
说到属性 - 这意味着它由于某些原因没有被自动装配,所以在你的情况下,你可以删除NullPinterException
和注释或找出自动装配的问题name
@Autowired
@Qualifier
推荐阅读
- java - Spring Data JPA Hibernate ManyToOne Postgres在持久化时返回null
- node.js - 如何更新模型?.updateAttributes 不是函数
- python - 在 Python 的 virtualenv 中使用 mkproject
- java - java中的数组苦苦挣扎
- asp.net-mvc - 如何重定向 Html.BeginForm 内的按钮
- python - python结构输出挂起
- python - 如何在 Python 中使用排序键函数调用?
- jmeter - Jmeter 分布式设置在 GUI 中工作,但在命令行中不工作
- c - 我的列表中有接缝溢出,但我找不到它
- javascript - HTML音频标签仅在我第一次手动导航到它之后才有效