xqueryjsoniq

How to get all string from json document in jsoniq or javascript?


I am trying to get all the values of json string as a single string. for example in xquery xml

let $x := <a> welcome to the world of <b> JSONiq </b></a>
return string($x)

will return welcome to the world of JSONiq

what is the equvalent result of of following documents in JSONiq:

let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return xxxx($y)

The result should be same welcome to the world of JSONiq If you know in javascript also it would be great.


Solution

  • First you need to get all values, either with libjn:values or its definition, then you can use fn:string-join to get a single string:

    So

    declare namespace libjn = "http://jsoniq.org/function-library";
    let $y := {"a":"welcome to the world of ","b":" JSONiq"}
    return string-join(libjn:values($y) ! string(), "")
    

    or

    let $y := {"a":"welcome to the world of ","b":" JSONiq"}
    return string-join($y() ! string($y(.)), "")
    

    This might also return "JSONiqwelcome to the world of ", since the object keys are unordered