我想知道是否有人可以回答我的问题,因为我不太明白为什么当我手动将一个对象传递给 spring Controller 时需要从请求输入流中读取 json 对象。
通常我使用 json-rpc 框架,它会为我处理所有事情,所以直到现在我实际上还不需要手动执行此操作。一切正常,但我不明白的是为什么请求中没有任何内容,就像您发布表单时一样,而我必须使用此代码将我的对象映射到 jackson :
BufferedInputStream bis = new BufferedInputStream(request.getInputStream());
ChartParameters chartParameters = mapper.readValue(bis, ChartParameters.class);
我只是想了解为什么我需要读取输入流并将其传递给 jackson ,而不是能够以字符串形式获取值,而我首先认为我必须这样做。
预先感谢您提供任何有用的答案。
最佳答案
如果您使用的是最新的 Spring 版本,以下内容应该足以让事情顺利进行:
@ResponseBody
public Chart handleChartJsonRPC(@RequestBody ChartParameters chartParameters) throws Exception {
return jsonService.getBarChart(chartParameters);
}
这(显然)假设您的 jsonService
返回一个 Chart
对象,在将其发送回浏览器之前应将其序列化为 JSON。
确保您有一个 MessageConverter,可以将您的对象序列化为 JSON 或从 JSON 序列化(反序列化),如 @user2054820 所述。
关于java - 使用 Ajax 发布 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587085/