declare function libjn:flatten($sequence as item()*) as item()* { for $item in $sequence return typeswitch ($item) case array() return libjn:flatten($item()) default return $item };
libjn:flatten( ( { "foo" : { "bar" : [ 1, 2 ] } }, [ 1, 2, [ { "foo" : "bar", "bar" : "foo" } ], 3, 4 ], true(), 1, jn:null() ) )
{ "foo" : { "bar" : [ 1, 2 ] } } 1 2 { "foo" : "bar", "bar" : "foo" } 3 4 true 1 null