I am new to json and dto. Tell me how to return json response to the browser page? (Using RestService)
In the answer to receive all interconnected trades and subjects. I have connected tables Many-to-many in this regard, I work with the dto layer
Profession
public class ProfessionDto { @JsonProperty("id") private int id; @JsonProperty("SubjectName") private String professionName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getProfessionName() { return professionName; } public void setProfessionName(String professionName) { this.professionName = professionName; } public static ProfessionWithSubjectDto fromModel(Profession profession){ ProfessionWithSubjectDto dto =new ProfessionWithSubjectDto(); dto.setId(profession.getId()); dto.setProfessionName(profession.getProfessionName()); List<SubjectDto> subjectDtos = new ArrayList<>(); for(Subject subject : profession.getSubjects()){ subjectDtos.add(SubjectDto.fromModel(subject)); } dto.setSubjects(subjectDtos); return dto; }}
Subjects
Public class SubjectDto { @JsonProperty("id") private Integer id;; @JsonProperty("SubjectName") private String subjectName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getSubjectName() { return subjectName; } public void setSubjectName(String subjectName) { this.subjectName = subjectName; } public static SubjectDto fromModel(Subject subject){ SubjectDto dto = new SubjectDto(); dto.setId(subject.getId()); dto.setSubjectName(subject.getSubjectName()); return dto; } }
Subject can have multiple professions
public class ProfessionWithSubjectDto extends ProfessionDto { @JsonProperty("id") private int id; @JsonProperty("professionName") private String professionName; @JsonProperty("subjects") private List<SubjectDto> subjects; public void setId(int id) { this.id = id; } public int getId() { return id; } public String getProfessionName() { return professionName; } public void setProfessionName(String professionName) { this.professionName = professionName; } public List<SubjectDto> getSubjects() { return subjects; } public void setSubjects(List<SubjectDto> subjectDtos) { this.subjects = subjectDtos; } public static ProfessionWithSubjectDto fromModel(Profession profession){ ProfessionWithSubjectDto dto = new ProfessionWithSubjectDto(); dto.setId(profession.getId()); dto.setProfessionName(profession.getProfessionName()); List<SubjectDto> subjectDtos = new ArrayList<>(); for (Subject subject : profession.getSubjects()){ subjectDtos.add(SubjectDto.fromModel(subject)); } dto.setSubjects(subjectDtos); return dto; } }
A profession may have several subjects.
public class SubjectWithProfessionDto { @JsonProperty("id") private int id; @JsonProperty("SubjectName") private String SubjectName; @JsonProperty("professions") private List<ProfessionDto> professions; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getSubjectName() { return SubjectName; } public void setSubjectName(String subjectName) { SubjectName = subjectName; } public List<ProfessionDto> getProfessions() { return professions; } public void setProfessions(List<ProfessionDto> professions) { this.professions = professions; } public static SubjectWithProfessionDto fromModel (Subject subject){ SubjectWithProfessionDto dto = new SubjectWithProfessionDto(); dto.setId(subject.getId()); dto.setSubjectName(subject.getSubjectName()); List<ProfessionDto> professionDtos = new ArrayList<>(); for(Profession profession : subject.getProfessions()){ professionDtos.add(ProfessionDto.fromModel(profession)); } dto.setProfessions(professionDtos); return dto; } }
There is a layer Controller
In it, I want to return the data (JSON) to the page using @ResponseBody
@RequestMapping(value = "/me",method = GET) @ResponseBody public List<SubjectDto> getAll(){ List<Subject> subjects = subjectService.getAll(); List<SubjectDto> subjectDtos = new ArrayList<>(subjects.size()); subjects.forEach(subject -> subjectDtos.add(convertToDTO(subject)));@RequestMapping(value = "/me",method = GET) @ResponseBody public List<SubjectDto> getAll(){ List<Subject> subjects = subjectService.getAll(); List<SubjectDto> subjectDtos = new ArrayList<>(subjects.size()); subjects.forEach(subject -> subjectDtos.add(convertToDTO(subject)));return subjectDtos; `but the program swears at convertToDTO - NadezhdaconvertToDTO()method and debug it. - enzo