我有一个Spring Boot控制台应用程序,我通过JMX访问执行器端点。问题是返回的文本不是很漂亮,而且不是JSON。它看起来像这样:
{context=application, parent=null, beans=[{bean=helloWorldApplication, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldApplication, resource=null, dependencies=[helloWorldService]}, {bean=helloWorldService, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldService, resource=file [C:/src-tmp/spring-skeleton/target/classes/com/surpreso/spring_skeleton/HelloWorldService.class], dependencies=[]}, {bean=com.surpreso.spring_skeleton.DefaultConfig, ...
将此格式变为可读格式的最佳方法是什么?是否可以将JMX执行器配置为漂亮的打印?是否可以将JMX执行器配置为使用JSON?
有一个关于Pretty print JSON output of Spring Boot Actuator endpoints的相关问题,但在这种情况下,我坚持使用JMX,因为我没有Web应用程序。下一步我将尝试CRaSH,但我很好奇是否可以将JMX执行器配置为更有用。
我正在使用Spring Boot的1.2.5版本。
UPDATE :CRaSH实现使用相同的格式,因此它不是解决方案。
更新2 :我在1.3.0中看到this提交“在所有EndpointMBeans中使用已配置的ObjectMapper,如果可用”,但我不知道要为漂亮设置哪些属性打印。它很接近......
更新3 :spring.jackson.serialization.indent_output=true
通过CRaSH界面没有任何效果。我现在在1.3.0.M2。
答案 0 :(得分:2)
您粘贴的输出是有效的json文档。是什么让你认为它完全无效?
如果您想要打印格式,那实际上取决于您访问JMX端点的方式。例如,如果您通过JConsole访问它,我不确定漂亮的打印输出对大文档是否可读。如果您手动访问JMX端点,那么您可以非常轻松地读取字符串并完全打印输出(JSONObject
具有toString
方法,该方法接受您要在文档上应用的缩进)。
关于CRaSH,这真的是无关紧要的。执行器端点位于CRaSH之外,并且不使用其任何功能。
编辑:我的错误,这不是有效的JSON,我在Spring Boot问题跟踪器中创建了#3658。