2016-05-17 3 views
6

Мне нужно создать узел JSON в XQuery в MarkLogic. Я знаю, что могу использовать xdmp:unquote() для синтаксического анализа строки в node(). Тем не менее, я хотел бы создать JSON программно, без уродливой конкатенации строк. Я могу использовать computed element constructors для создания узлов XML в XQuery. Есть ли что-то подобное для узлов JSON?Как программно создать JSON в XQuery в MarkLogic?

+0

Гораздо больше вопрос MarkLogic, чем общий вопрос XQuery. То, как это делалось, скажем, BaseX было бы другим. –

+0

Yup. Благодарю. Я обновил название и описание, чтобы отразить это. –

ответ

8

JSON реализован в MarkLogic как расширение модели данных XML. MarkLogic 8 представляет object-node, array-node, number-node, boolean-node и null-node испытания и конструкторы. Таким образом, в XQuery вы можете создавать JSON с вычисленными конструкторами, как и с XML. Например,

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

создаст JSON,

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

Помимо: В JavaScript вы можете построить JSON-подобных структур в качестве объектов JavaScript с использованием синтаксиса JavaScript. Вы можете преобразовать объект JavaScript в узел JSON, используя xdmp.toJSON(). Однако большинство встроенных функций, которые требуют узла JSON, будут автоматически выполнять это преобразование, например xdmp.documentInsert().

Смежные вопросы