2016-05-17 21 views
6

Ho bisogno di costruire un nodo JSON in XQuery a Mark Logic. So che posso usare xdmp:unquote() per analizzare da una stringa in un node(). Tuttavia, mi piacerebbe creare il JSON a livello di codice, senza la concatenazione di stringhe brutte. Posso usare computed element constructors per creare nodi XML in XQuery. C'è qualcosa di simile per i nodi JSON?Come posso creare JSON in modo programmatico in XQuery in MarkLogic?

+0

Molto più una domanda Mark Logic che una domanda generica XQuery. Il modo in cui l'hai fatto, per esempio, BaseX sarebbe stato diverso. –

+0

Sì. Grazie. Ho aggiornato il titolo e la descrizione per riflettere questo. –

risposta

8

JSON è implementato in Mark Logic come un'estensione del modello di dati XML. MarkLogic 8 introduce i test e i costruttori object-node, array-node, number-node, boolean-node e null-node. Pertanto, in XQuery puoi creare JSON con costruttori calcolati, proprio come faresti con XML. Ad esempio,

object-node { 
    "key" || fn:string(xdmp:random(100)): array-node { 1, 2, 3 }, 
    "another": object-node { "child": text {'asdf'} }, 
    "lastButNotLeast": boolean-node { fn:true() } 
} 

creerà la JSON,

{ 
    "key47": [1, 2, 3], 
    "another": { 
    "child": "asdf" 
    }, 
    "lastButNotLeast": true 
} 

parte: In JavaScript è possibile costruire strutture JSON-like come oggetti JavaScript utilizzando la sintassi JavaScript. È possibile convertire un oggetto JavaScript in un nodo JSON utilizzando xdmp.toJSON(). La maggior parte delle funzioni incorporate che richiedono un nodo JSON, tuttavia, eseguirà questa conversione automaticamente, come ad esempio xdmp.documentInsert().

Problemi correlati