繁体   English   中英

从Servlet发送JSon对象的最佳方法

[英]Best way to send a JSon object from Servlet

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

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

我的意思是,在我的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响应的主体

您是否为Web服务器使用框架,还是手动处理一切? 如果使用框架,它通常会为您完成,只需传递JSON字符串

如果您手动执行此操作:

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

要么

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

两者均有效,请参见Writer或OutputStream?

不管您说什么,JSON的大小都无关紧要,它只是文本,因此大小不够重要。


您可以使用哪些库

Java有很多JSON库,主要是:

找一个你喜欢的人,整个Google都会有大量的文档和资源


如何在生产中使用

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

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

使用Gson是发送json的好方法

Gson gson = new Gson();
String jsonData = gson.toJson(student);
PrintWriter out = response.getWriter();
try {
    out.println(jsonData);
} finally {
    out.close();
}

有关Java中servlet的详细json响应

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM