1

因此,我使用 jQuery 插件 (jsonp) 对 api 进行跨域调用并获取 JSON 数据。我需要以某种方式将这些数据放入我的 XQuery 页面。我正在使用 Marklogic 服务器来存储我的所有 XML 数据,并且我知道它有一些 XDMP 函数来处理 JSON 数据,它将 JSON 从 javascript 获取到 XQuery,这让我很痛苦。

关于如何解决这个问题的任何想法?

4

1 回答 1

3

我不是 100% 确定是什么给您带来了问题,但会尝试提供一个解决方案,希望能让您顺利上路。

GitHub 上有一个名为 MLJSON ( https://github.com/marklogic/mljson/wiki )的开源项目。它可以接收 JSON 字符串,对其进行解析并返回 MarkLogic 可以轻松使用的 XML 文档。

如果理解 XML 的内部结构并不吸引人(尽管它相当简单,但没有记录),该项目还包括一个路径解析器,用于从解析的 JSON 文档中提取位。这是一个快速示例 XQuery 页面,它将一些 JSON 作为 POST 或 GET 参数发送到服务器,对其进行解析并提取一个值:

xquery version "1.0-ml";

import module namespace json="http://marklogic.com/json" at "lib/json.xqy";
import module namespace path="http://marklogic.com/mljson/path-parser" at "lib/path-parser.xqy";

let $jsonString := xdmp:get-request-field("json")
let $jsonXML := json:parse($jsonString)
let $firstName := path:select($jsonXML, "author.firstName", "json")

return concat("First name: ", $firstName)

如果上面的脚本传递了一个 JSON 文档,例如:

{
    "author": {
        "firstName": "Noam",
        "lastName": "Chomsky"
    }
}

它将返回字符串:“名字:Noam”。

MLJSON 有许多其他的特性,我不会在这里详细介绍,但会提到它具有构造 JSON 对象、数组等并将它们序列化为 JSON 字符串的函数。

希望有帮助。

于 2011-09-22T22:35:46.130 回答