【发布时间】:2017-11-15 18:51:12
【问题描述】:
我正在尝试公开 REST 服务,但是当我从 POSTMAN 中点击它时,我得到了以下信息:
警告:无法写入 HTTP 消息:org.springframework.http.converter.HttpMessageNotWritableException:未找到类型返回值的转换器:类 java.util.ArrayList
我还包括以下所需的 jar 文件:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.1</version>
</dependency>
这是我的 REST 控制器代码:
@RestController
@RequestMapping("/MayankAPI")
public class TestRestAPI {
@RequestMapping(value="/sayHello" , method = RequestMethod.POST)
public TestPojo postData(@RequestBody String payload) {
System.out.println("Hello post"+payload);
TestPojo payload1=new TestPojo();
payload1.setStudentName("Jack");
return payload1;
}
@RequestMapping(value="/sayHello" , method = RequestMethod.GET)
public List<TestPojo> getData(String payload) {
System.out.println("Hello get"+payload);
List<TestPojo> payload1=new ArrayList<TestPojo>();
TestPojo tp = new TestPojo();
tp.setStudentName("Jack");
payload1.add(tp);
return payload1;
}
这是我想要返回的 bean:
public class TestPojo {
private String studentName;
private String studentId;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
}
请帮助我哪里做错了。
【问题讨论】:
-
就在那里,在您的错误消息中,“ArrayList 无法转换...”。在返回之前尝试在 ArrayList 上使用 .ToArray() 函数。
-
但是为什么我要把它转换成数组,因为我想返回列表。即使在那种情况下它也不起作用。
-
我不熟悉Java中的JSON转换,但从错误来看,它似乎无法将您的ArrayList转换为JSON字符串。
-
也看here。您可以尝试公开您的对象属性吗?这可能是吸气剂的问题。
-
内容类型协商可能会失败。确保您已注册MappingJackson2HttpMessageConverter
标签: spring spring-mvc spring-restcontroller