Convertir un objet en JSON dans le RESTE du service par Spring MVC

Je suis en train de créer un service REST à l'aide de Spring MVC et ça fonctionne si je retourne une chaîne simple. Mon exigence est de retourner une chaîne JSON de l'objet Java. Ne sais pas comment faire pour l'obtenir par conversion implicite.

Voici mon code:

StudentService.java

package com.spring.schoolmanagement.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.spring.schoolmanagement.dao.CourseDAOImpl;
import com.spring.schoolmanagement.dao.StateDAOImpl;
import com.spring.schoolmanagement.dao.StudentDAOImpl;
import com.spring.schoolmanagement.model.Student;

@Controller
@RequestMapping("/rest/student")
public class StudentService {

    @Autowired
    private CourseDAOImpl courseService;
    @Autowired
    private StudentDAOImpl studentService;
    @Autowired
    private StateDAOImpl stateService;


    @RequestMapping(value = "/{id}", method = RequestMethod.GET, headers = "Accept=*/*")
    @ResponseBody
    public Student home(@PathVariable int id) {
        return this.studentService.getById(id);
    }

    @RequestMapping(method = RequestMethod.GET, headers = "Accept=*/*")
    @ResponseBody
    public List<Student> getAll() throws Exception {
        return this.studentService.getAll();
    }

    @RequestMapping(value = "/test", method = RequestMethod.GET, headers = "Accept=*/*")
    @ResponseBody
    public String test() {
        return "Test REST Service!!!";
    }
}

Student.java

package com.spring.schoolmanagement.model;
import java.util.Date;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;
public class Student extends Contact{
private int id;
@NotEmpty
@Size(max = 30)
private String firstName, lastName;
//private String lastName;
@DateTimeFormat(pattern="MM/dd/yyyy")
private Date DOB, DOA;
//private Date DOA;
@NotEmpty
@Email
private String email;
private String password;
private int courseID;
private String courseName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getDOB() {
return DOB;
}
public void setDOB(Date dOB) {
DOB = dOB;
}
public Date getDOA() {
return DOA;
}
public void setDOA(Date dOA) {
DOA = dOA;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getCourseID() {
return courseID;
}
public void setCourseID(int courseID) {
this.courseID = courseID;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}

Ici http://localhost:8080/schoolmangement/rest/student/test URL est de retour "Test de REPOS!!!"

Mais, http://localhost:8080/schoolmangement/rest/student/1 URL jeter le code d'État HTTP 406 avec le message d'erreur:

La ressource identifiée par cette demande est seulement capable de générer des réponses avec des caractéristiques pas acceptable en fonction de la demande "accepter" les en-têtes.

Je ne sais pas pourquoi vous spécifiez headers = "Accept=*/*", mais vous devez spécifier produces = "application/json"
Votre configuration Spring n'a probablement pas inclure une Jackson mappeur. L'utilisation de Ressort de Démarrage pour la configuration, qui va configurer automatiquement, et si vous n'êtes pas à l'aide d'un découplé DTO pour votre API externe de la représentation, envisager de Données du Printemps de REPOS.
Oui, vous avez raison. J'ai finalement trouvé la solution.

OriginalL'auteur Roul | 2015-03-16