【发布时间】:2017-05-21 16:47:54
【问题描述】:
正如问题所述,我的 Jersey webapp 使用 @Consumes 注释在 POST 请求上使用 JSON 并将其保存到变量的最佳方式是什么? 我的方法是这样的:
@Path("/postask")
@POST
@Consumes("application/json")
@Produces("text/plain")
public String postAsk(@Context ServletContext context) {
return Chatbot.ask(someinputgottenfrommyjson, context);
}
我知道我的 Chatbot 方法只有一个字符串输入,我可以使用 text/plain 类型,但这无关紧要。我这样做是为了将来的扩展。
我的应用程序将收到一个类似于{ "input": "Some Text Input provided by the client" } 的 JSON 字符串,我需要获取该输入字段并将其保存到一个变量中。
从查看其他答案和教程来看,似乎一种方法是创建一个反映 JSON 对象中的字段的类,并且 Jersey 会自动解析到该对象中。也许我错了。我不喜欢这种方法,因为它会创建庞大的类。另一种方法是可能使用表单参数,但我不确定这是否可行。是否有捷径可寻?
抱歉,如果我的问题很愚蠢,我以前从未使用过 Jersey 或 Java 网络应用程序。
【问题讨论】:
-
bulky classes 有什么问题?您可能编写的将 JSON 文档解析为字符串的任何代码都可能比简单的参数类更冗长且更难理解。如果您担心性能,请以最简单的方式实现代码,获取一些数字并证明它实际上是为了满足您的需要而减慢。可读的代码应该很容易编写得更快,但它很少反过来工作。
-
@toniedzweidz 好的,谢谢
标签: java json rest jersey jax-rs