java - 从 Servlet 发送 JSon 对象的最佳方式

标签 java json servlets

这个问题看起来很简单,但我还没有找到好的答案。我需要将 JSon 结构(使用我当前正在开发的未指定库构建)从 Servlet 发送到远程页面。

我对发送结构的最佳方式感兴趣。

我的意思是,在我的 Servlet 中,在 doPost() 事件中,我应该如何管理发送?

我正在考虑两种情况:

try (PrintWriter out = response.getWriter()) {
   out.print(myJSon.toString(); // <- recursive function that overrides 
                                // toString() and returns the entire JSon 
                                // structure

} (...)

try (OutputStream os = response.getOutputStream()) {
   myJSon.write(os, StandardCharsets.UTF8); // <- function that 
// recursively writes chunk of my JSon structure 
// in a BufferWriter created inside the root write function
// forcing UTF-8 encoding

} (...)

或者不同的东西,如果有更好的方法的话。

请注意,JSon 结构包含一个具有长文本字段的对象数组(超过 1000 个字符的描述),因此它可能非常消耗内存。

为什么我不使用标准 JSon 库,因为我不了解它们,也不知道我是否可以信任它们。而且我也不知道是否能够将它们安装在生产服务器上。

感谢您的回答。

最佳答案

从你的问题中我看到了多个需要解决的问题:

  1. 如何发送您的 JSon
  2. 您可以使用什么 Json 库
  3. 如何在生产中使用该库
<小时/>

如何发送你的 JSon

从您的代码来看,这似乎是 HTTP 响应,而不是 Servlet 上的 POST,因此您需要知道如何将 JSON 字符串作为 HTTP 响应的正文发送

您的网络服务器使用框架还是手动处理所有事情?如果您使用框架,它通常会为您完成,只需传递 JSON 字符串

如果您手动执行此操作:

try (PrintWriter pw = response.getWriter()) {
   pw.write(myJson.toString());
}

try (OutputStream os = response.getOutputStream()) {
   os.write(myJson.toString().getBytes());
}

两者都有效,请参阅Writer or OutputStream?

考虑到你所说的内容,你的 JSON 大小应该不重要,它只是文本,所以它不会大到足以产生影响。

<小时/>

您可以使用哪些库

Java的JSON库有很多,主要是:

选择您喜欢的那个,Google 上会提供大量文档和资源

<小时/>

如何在生产中使用

如果您不确定是否能够在生产服务器上安装依赖项,您始终可以创建 uber-jar (参见@Premraj的回答)

基本上,您将依赖项捆绑在 Jar 中

关于java - 从 Servlet 发送 JSon 对象的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776132/

相关文章:

java - 如何使用 JAXB 为多态类型添加额外的 XML 元素

java - 如何使重写方法中的 javadoc 注释可见

json - Ruby 无法解析 Json

servlets - Apache Derby-嵌入式模式-重新加载servlet时无法启动数据库

java - 长宽比问题

c# - 使用 jQuery 将表单数据发布到 MVC4 Controller 操作方法时出现问题

jquery - 使用 Ajax 在数组中传递 Javascript 数组

java - 阻止从 JSP 访问 WEB-INF

javascript - 未捕获的语法错误 : Unexpected token (Script Ajax Call)

java - Android编程中如何获取当前内容 View ?