我正在尝试通过在 Spring Boot 中反序列化 JSON 消息来创建 Java 对象。我有一个这样的类(class):
public class Status implements Serializable {
private int uptime;
}
然后我有一个这样的休息 Controller :
@RestController
public class StatusReceiver {
@RequestMapping(value = "/poststatus", method = RequestMethod.POST)
public @ResponseBody Status storeStatus(@RequestBody Status statusMessage) {
System.out.println("Uptime: " + statusMessage.getUptime());
return statusMessage;
}
}
我绝对不明白我在这里所做的事情。我希望 Controller 在收到消息时创建一个 Status 对象并将其存储在数据库中。
这段代码的输出是:
Uptime: 0
它收到的消息是:
{
"Status": [
{
"uptime": 12345.0
}
]
}
我显然错过了一些东西。如何让 Spring 将 JSON 对象转换为 Status java 对象?另外,该方法的返回值在哪里?
最佳答案
请求正文 JSON 与状态对象结构不匹配。要么你的 body 应该是
{uptime: 12345.0}
或者 Status 类应该是
class Status {
List<Map<String, Long>> status = new ArrayList<>();
}
您可以定义一个新类并拥有该新类的列表,而不是拥有 map 列表
class StatusInfo{
long uptime;
}
class Status {
List<StatusInfo> status = new ArrayList<>();
}
关于java - 使用 Spring 将入站 JSON 消息转换为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301890/