Hi Bertrand, for the archive, sling pipes [0] can be used for outputing json (and doing complex jcr extraction), with bits of script in it. It’s mostly jcr manipulation though, and there are still a few enhancements to make them more friendly i’m working on for adaptTo.
Nicolas [0] https://sling.apache.org/documentation/bundles/sling-pipes.html > On 01 Jul 2016, at 15:19, Bertrand Delacretaz <bdelacre...@apache.org> wrote: > > Hi, > > I'm looking at simpler ways of customizing Sling's JSON output - one > can of course write servlets to do that, but as it's a common use case > it would be good to be able to do that with less code. > > I've been playing with the Groovy JsonBuilder and quite like it - see > the Gist at [1] for an example which explores creating a simple script > engine for "JSON builder scripts" which can use the full power of > Groovy while having very little code to write for simple use cases. > > Once the required engine is implemented, which is just a few lines of > code to wrap the script and let Groovy compile and run it, a script > like > > // r is the current resource, in a Groovy wrapper > // that provides some navigation/aggregation functions > root { > def kids = r.child("sub").children("kid", 3) > path r.path > title r.props.title > childCount kids.size > childPaths kids.collect { r -> path:r.path } > } > > would produce output like > > { > "root": { > "path": "/currentResource", > "title": "This is /currentResource", > "childCount": 3, > "childPaths": [ > "/currentResource/sub/kid_1", > "/currentResource/sub/kid_2", > "/currentResource/sub/kid_3" > ] > } > } > > WDYT? > -Bertrand > > [1] https://gist.github.com/bdelacretaz/9cbb07de84f2ae74e6a54438522686ff