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

Reply via email to