我一直在尝试通过 REST 服务发送 Java 对象列表,但是每当我尝试将其转换回 Java 数组时,我都会收到一个 JSON 解析错误:
2018-06-10 10:50:08.044 WARN 13680 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver :
Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException:
JSON parse error: Can not deserialize instance of com.master.entity.Greeting[] out
of START_OBJECT token; nested exception is
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize
instance of com.master.entity.Greeting[] out of START_OBJECT token
at [Source: java.io.PushbackInputStream@1e32b2a; line: 1, column: 1]
这是问候类:
public class Greeting {
private final long id;
private final String content;
public Greeting() {
id = 0;
content = "something";
}
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
REST响应方法:
@RequestMapping("/getlist")
public List<Greeting> getList(Model model) {
List<Greeting> greetings = new ArrayList<>();
greetings.add(new Greeting(1, "Something"));
greetings.add(new Greeting(2, "Something"));
greetings.add(new Greeting(3, "Something"));
greetings.add(new Greeting(4, "Something"));
return greetings;
}
我的请求方法:
public void restGet() {
String url = "http://192.168.0.11:8080/greeting";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<Greeting[]> responseEntity = restTemplate.getForEntity(url, Greeting[].class);
Greeting[] greeting = responseEntity.getBody();
for (int i = 0; i < greeting.length; i++) {
System.out.println("\n id: " + greeting[i].getId());
}
}
这是 JSON 字符串:
[{"id":1,"content":"Something"},{"id":2,"content":"Something"},{"id":3,"content":"Something"},{"id":4,"content":"Something"}]
任何帮助将非常感激。谢谢!
我按照 raiyan 的建议将 URL 更改为正确的 URL,现在可以正常工作了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句