我正在尝试使用Spring MVC创建一个REST服务,如果我返回一个纯字符串,它就能正常工作。我的要求是返回Java对象的JSON字符串。不知道如何通过隐式转换实现这一点。
下面是我的代码:
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!!!";
}
}
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;
}
}
但是,HTTP://localhost:8080/schoolmangement/rest/student/1 URL抛出HTTP状态代码406并带有错误消息:
由该请求标识的资源仅能够生成具有根据请求“接受”报头不可接受的特性的响应。
最后,我得到了使用Jackson库和Spring MVC的解决方案。我从Journal Dev的一个示例(http://www.journaldev.com/2552/spring-restful-web-service-example-with-json-jackson-and-client-program)中获得了这个解决方案
所以,我所做的代码更改是:
我没有对我的REST服务控制器进行任何更改。默认情况下,它转换为JSON。
我使用的是名为Gson的Google JSON API,在设置Java类以便使用方法时遇到了困难。 从JSON数据中,我知道有一个包含所有数据的对象数组。让我感到困惑的是外部标记。我知道我必须构造一个表示对象的类,但是我是否也必须创建一个表示的类,因为它包含? 目前,我有一个名为的文件,其中包含以下内容: 我只包括了我计划使用的变量。上面的JSON数据包含在一个名为的字符串中,这就是我在main方
我正在处理jBPM 7.22.0。最终的 我使用服务任务REST从这个api获取响应https://reqres.in/api/users/1 我想将此响应获取到一个对象中,因此我创建了这个类(或jBPM中调用的数据对象): 我在jBPM中创建了一个名为res的全局变量,该变量具有我要存储响应的数据对象的类型。因此,在我的REST服务任务的“任务”中,我有屏幕截图中的内容。 如您所见,我想将结果存
问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答
我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议:
我有字符串值 是否有任何可用的函数或有效的方法将这个JSON字符串转换成Java DateTime对象,而不是一个接一个地读取字段并构建我的对象? 谢谢
例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。