【发布时间】:2014-06-10 06:20:24
【问题描述】:
我是泽西岛的新手,想更改以下生成的内容:
@Produces(MediaType.APPLICATION_JSON)
我最终要做的是确保响应的字符编码设置为 UTF-8。如果我对每个生成 json 的方法都执行此操作,我可以根据具体情况执行此操作。
@Produces("application/json;charset=UTF-8")
我当然想在我的应用程序中执行一次,让它在任何地方都可以使用。我的第一个想法是 implement a java filter 修改它,但我无法让它工作。
编辑:所以要 100% 清楚 - 我想在我的应用程序中以某种全局方式执行此操作,并让它影响 Jersey 为我有的任何地方生成的所有输出@Produces(MediaType.APPLICATION_JSON) 在我的代码中。因此,如果我有 100 个带有 @Produces(MediaType.APPLICATION_JSON) 的方法,那么现在突然有 100 个方法将使用 UTF-8 编码的内容发送。
那么无论如何我可以替换@Produces(MediaType.APPLICATION_JSON) 产生的东西吗?如果不是最终值,我只需将 MediaType.APPLICATION_JSON 更改为我的新值;-)
【问题讨论】:
-
您可以使用
Response生成您想要的任何内容类型(和编码)的响应。 -
如果您的所有 JSON 都必须编码为 UTF-8,您可能应该利用框架始终这样做。根据您序列化为 JSON 的方式,您需要配置序列化以便发生这种情况。这是最稳健的方式。
-
当然……听起来不错……那你觉得我应该怎么做?
-
您可以为每个请求添加一个
ContainerResponseFilter或WriterInterceptor。
标签: java json jersey content-type