使用Spring将入站JSON消息转换为Java对象

时间:2016-09-02 23:35:48

标签: java json spring

我试图通过在Spring Boot中反序列化JSON消息来创建Java对象。我有一个班级:

public class Status implements Serializable {
    private int uptime;
}

然后我有一个Rest 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;

    }

}

我绝对不了解我在这里所做的一切。我希望控制器在收到消息时创建一个Status对象并将其存储在数据库中。

此代码的输出为:

Uptime: 0

它收到的信息是:

{
  "Status": [
    {
      "uptime": 12345.0
    }
  ]
}
我显然错过了一些东西。如何让Spring将JSON对象转换为Status java对象?此外,该方法的返回意图在哪里进行?

1 个答案:

答案 0 :(得分:1)

请求正文JSON与Status对象结构不匹配。你的身体应该是

require

或Status类应为

{uptime: 12345.0}

您可以定义一个新类并拥有此新类的列表

,而不是拥有Map列表
class Status {
   List<Map<String, Long>> status = new ArrayList<>();
}