当前位置: 首页 > 知识库问答 >
问题:

我可以从注释或从Spring MVC控制器配置Jackson JSON漂亮的打印吗?

安轶
2023-03-14

我在Spring MVC应用程序中使用Jackson1.9.6(codehaus)对响应体进行JSON序列化,但我在找到一种配置漂亮打印的方法时遇到了麻烦。我能找到的所有代码示例(像这样和这样)都涉及到使用ObjectMapperObjectWriter的实例化,但我目前没有将这些实例化用于其他任何事情。我甚至不知道该把这些代码放哪。我的所有Jackson配置都是通过对序列化到JSON的POJO进行注释来完成的。

有没有办法在注释中指定漂亮的打印?我想他们会把它放进@jsonSerialize,但看起来不是这样。

我要序列化的类如下所示:

@JsonAutoDetect
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class JSONObject implements Serializable{...}

我的Spring控制器方法如下所示:

@RequestMapping(method = RequestMethod.GET)
public @ResponseBody List<Object> getMessagesAndUpdates(HttpServletRequest request, HttpServletResponse response) {
    JSONObject jsonResponse = new JSONObject();
    .
    .
    .
    //this will generate a non-pretty-printed json response.  I want it to be pretty-printed.
    return jsonResponse;
}

共有1个答案

闾丘成双
2023-03-14

我搜索了一遍又一遍类似的东西,我能找到的最接近的东西是将这个bean添加到我的应用程序上下文配置中(注意:我使用的是Spring Boot,所以我不能百分之百确定这在非Spring Boot应用程序中是否能正常工作):

@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder()
{
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.indentOutput(true);
    return builder;
}

在我看来,它是可用的最干净的解决方案,而且效果很好。

 类似资料:
  • 我将JSON存储在数据库中,并希望将此JSON按原样包含在API响应中,而不在序列化数据之前进行反序列化。数据本身驻留在包装器对象中。序列化这个包装器时,我数据库中的JSON似乎没有与其他数据一起打印出来,给出了非常奇怪的响应。 我已经编写了一些示例代码来概述我的问题: 此测试失败,输出如下: 我希望jackson能给我以下输出: 有什么方法可以“修复”用注释的原始数据的缩进?

  • 问题内容: 现在,我有一个实例,并希望使用漂亮的JSON 来获取一个。我所有的Google搜索结果都提供了Jackson 1.x的实现方法,而我似乎找不到使用2.2的正确,不建议使用的方法。即使我不认为代码对于此问题绝对必要,这也是我现在拥有的: 问题答案: 您可以启用通过设置漂亮的印刷上的,如下所示:

  • 现在我有一个的实例,希望得到一个具有漂亮JSON的。我在谷歌搜索的所有结果都显示了Jackson1.x的实现方法,而我似乎找不到合适的、不受反对的2.2实现方法。尽管我不认为代码对于这个问题是绝对必要的,但下面是我现在掌握的:

  • 问题内容: 如果有人对JSON的打印非常了解,那么我将不胜感激! 我正在使用以下功能将JSON字符串移动到文件中,以将复杂的python字符串转换为JSON格式: 问题是我遇到了方括号的语法错误,因为这对我来说是个新话题,我不知道该如何解决。我需要的JSON格式如下: 我正在使用Google Visualization API,您可能对此比较熟悉,但是我需要动态图。上面的代码是API创建图形所需的

  • 问题内容: 我正在创建一个JSON文件的脚本。现在,我只是使用(PHP 5.2.x)将数组编码为JSON输出。然后,我将返回值打印到文件中并保存。问题是客户端希望能够打开这些JSON文件以提高可读性,因此我想在其中添加换行符并“漂亮打印” JSON输出。有关如何执行此操作的任何想法?我唯一可以看到的替代方法是完全不使用,而只是手动写入文件内容,并为每行添加自己的换行符。 这是我得到的: 这就是我想

  • 下面是我的例子: 如何为JSONARRAY启用漂亮的打印? 我认为这足以解释我的问题,但是这里有一些bla bla bla bla bla bla因为stackoverflow问我更多的细节,让我发布问题。