当前位置: 首页 > 知识库问答 >
问题:

springboot生成的JSON中缺少名称标记

通啸
2023-03-14

我正面临一个与下面显示的代码的问题。下面的代码生成json,如下所示:

[{“id”:123,“科目”:“英语”},{“id”:456,“科目”:“数学”}]

我们可以看到生成的JSON中缺少name标记。我不明白当我返回Student列表时,结果的json应该包含name标记,因为Student类中有一个类型为“name”的属性。请救命!

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;
    }

}

共有1个答案

杨海
2023-03-14

问题是student类中没有name的getter。请按以下方式添加getter:

@Component
public class Student {
  int id;
  String Subject;

  Name name;

  /******/

  public Name getName() {
    return name;
  }
}

谈到具有name属性的nullpinterexception-这意味着由于某些原因它还没有自动连线,因此在您的情况下,您可以删除@autowired@qualifier批注,或者找出自动连线的问题

 类似资料:
  • 已安装: IBM Websphere MQ V7.5 GlassFish V3.1.2.2 MQ Explorer V7.5 我正在尝试为GlassFish配置资源适配器以使用Websphere MQ资源,并遵循http://www-01.ibm.com/support/knowledgecenter/ssfksj_8.0.0/com.ibm.MQ.dev.doc/q121520_.htm中的说明

  • 我一直收到这个错误: 原因:org.springframework.context.ApplicationContextException:由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplication Context。 这是我的运行配置中的目标。 这是MyApp.class: 这是我的Gradle构建文件: MyApp.java和

  • npm错误!此运行的完整日志可以在:npm err!C:\users\ttopo\appdata\roaming\npm-cache_logs\2020-11-20t07_58_40_339z-debug.log` 0信息如果它以ok结束就可以工作1详细cli[1详细cli'c:\program Files\nodejs\node.exe',1详细cli'c:\program Files\node

  • 问题内容: 我使用XJC工具为XSD架构生成Java类。当我使用JAXB Marshaller将类编组为XML有效负载时,我在输出XML中缺少“ schemaLocation”参数,但在xsd文件中声明了此参数。如何在输出XML中强制执行“ schemaLocation”参数? 以下是用于代码生成的xsd模式文件的开头: 问候 问题答案: 试试这个:

  • 我正在使用jooq为我的H2 db表生成pojo 但是生成的代码(如下) 缺少@GeneratedValue注释,这使得无法使用spring data rest repository插入新记录,因为传入的对象总是抱怨没有设置id字段。 我可以做什么配置/工作来让jooq正常工作? 下面是我用来在编译时生成pojo的相关pom文件部分: 变通方法 在添加该功能之前,遇到相同问题的任何人都可以选择替换

  • 例如,一个XML属性值是,但名称空间前缀“repository”从未在数据集中定义。(不要紧,提供商的最佳实践建议定义它!) 所以当我去解封一个示例集时,具有指定前缀的QName属性(在我上面的示例中为“Repository”)是空的!所以看起来JAXB正在“抛出”那些具有未定义名称空间前缀的属性QName值。我很惊讶,它甚至没有保留当地的名字。 理想情况下,我希望保持该值原样,但看起来我无法在绑