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?
6
A
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()
.
Molto più una domanda Mark Logic che una domanda generica XQuery. Il modo in cui l'hai fatto, per esempio, BaseX sarebbe stato diverso. –
Sì. Grazie. Ho aggiornato il titolo e la descrizione per riflettere questo. –