从OSGI包获取.json形式的JCR节点

时间:2014-03-26 16:38:51

标签: cq5 jcr aem

我正在尝试在Java类的上下文中将JCR节点作为JSON。我很好奇是否有一个JCR的内部API,它将Node作为JSON w /它的子节点数组返回。

一个很好的例子是你在浏览器中向mynode.infinity.json发出请求时会得到的输出。

我看了JsonJcrNode类,它确实给了我想要的东西,但它排除了目标节点的子节点。

我认为我必须手动获取节点及其子节点,然后遍历属性并手动创建我的JSONObject。我只是好奇,如果已经完成这项工作,或者我还缺少其他任何可以帮助我解决这个问题的界面。

谢谢,

布罗迪

2 个答案:

答案 0 :(得分:6)

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),并可选择生成格式良好的输出(将true作为最后一个参数传递)。

答案 1 :(得分:1)

按照Brodie在Tomek的回应评论中的建议,应使用TidyJsonItemWriter(假设您正在使用使用com.day.cq.commons包的项目)。现在不推荐使用JsonItemWriter。

Tomek的代码基本相同,只是使用TidyJsonItemWriter的实例而不是JsonItemWriter。