我正在尝试在Java类的上下文中将JCR节点作为JSON。我很好奇,是否有用于JCR的内部API会将Node作为带有其子节点数组的JSON返回为JSON。
一个很好的例子是您从浏览器中向mynode.infinity.json发出请求所得到的输出。
我看了看JsonJcrNode类,它确实提供了我想要的东西,但它排除了目标节点的孩子。
我认为我将必须手动获取一个节点及其子节点,然后遍历属性并手动创建我的JSONObject。我只是想知道是否已经完成此操作,或者是否缺少任何其他接口可以帮助我解决此问题。
谢谢,
Brodie
JsonItemWriter
类完全满足您的需求:
JsonItemWriter
Node node = session.getNode("/content/geometrixx/en/toolbar/contacts");
StringWriter stringWriter = new StringWriter();
JsonItemWriter jsonWriter = new JsonItemWriter(null);
jsonWriter.dump(node, stringWriter, -1, true);
String json = stringWriter.toString();
方法允许指定递归级别(dump()
为无穷大,并且可以选择生成格式正确的输出(将-1
作为最后一个参数传递。]
如Brodie在Tomek的回复评论中所建议,应使用TidyJsonItemWriter(假设您正在使用使用com.day.cq.commons软件包的项目进行工作)。现在不推荐使用JsonItemWriter。
来自Tomek的代码基本相同,只是使用TidyJsonItemWriter的实例而不是JsonItemWriter。