[MarkLogic Dev General] ML8 Json

Paul Hoehne Paul.Hoehne at marklogic.com
Mon Mar 23 14:51:01 PDT 2015

Actually, you’ve got a much easier way of generating JSON in ML 8:

It will look something like:

let $obj := object-node {
  “name”: “world”,
  “label”: “Hello"


Hope that helps.  Save yourself some angle brackets and typing.

Paul Hoehne
Senior Consultant
MarkLogic Corporation
paul.hoehne at marklogic.com
mobile: +1 571 830 4735

Click http://po.st/hMGDFm to get your free NoSQL For Dummies e-book!

From: Paul Williams <Paul.Williams at flatironssolutions.com<mailto:Paul.Williams at flatironssolutions.com>>
Reply-To: MarkLogic Developer Discussion <general at developer.marklogic.com<mailto:general at developer.marklogic.com>>
Date: Monday, March 23, 2015 at 5:45 PM
To: MarkLogic Developer Discussion <general at developer.marklogic.com<mailto:general at developer.marklogic.com>>
Subject: [MarkLogic Dev General] ML8 Json

In upgrading from ML6 to ML8 we have an issue in our application code where we are generating JSON for a client-side script.  I know there has been a huge change in JSON support, but can anyone tell me exactly what is going on here?

Sample code:
xquery version "1.0-ml";
let $obj :=
       <json:object xmlns:json="http://marklogic.com/xdmp/json">
       <json:entry><json:key>name</json:key><json:value xsi:type="xs:string">world</json:value></json:entry>
       <json:entry><json:key>label</json:key><json:value xsi:type="xs:string">hello</json:value></json:entry>
let $doc := xdmp:to-json(json:object($obj))
       <script type="text/javascript">var obj = {$doc}</script>

If you execute that in ML6, as expected, you get…
                <script type="text/javascript">var obj = {"name":"world", "label":"hello"}</script>

But in ML8, you get this error pointing at the highlighted reference
                XDMP-CHILDNODEKIND: $doc -- element nodes cannot have object node children

I’m not sure exactly what is the “element node” this message refers to.  I know that I can quote the reference (xdmp:quote($doc)) and make it work, but I’m trying to understand what specifically is different between ML6 & ML8 that is causing this problem so I can be sure of my workaround.
Any comments?

Paul Williams | Technical Consultant
M:+1 402 203 2232 | Sk:paul.wms
Paul.Williams at FlatironsSolutions.com<mailto:Paul.Williams at FlatironsSolutions.com>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20150323/99b328eb/attachment-0001.html 

More information about the General mailing list