从资源扩展返回文本json

时间:2016-06-10 15:51:56

标签: json marklogic marklogic-8

我有一个资源扩展,我想返回json作为对GET请求的响应。我有JSON作为文本,而不是对象树。我以为我可以简单地在output-type地图中设置$context,然后在文档节点中返回文本,但似乎我的内容类型在响应标头中更改为text / plain。

xquery version "1.0-ml";

module namespace resource = "http://marklogic.com/rest-api/resource/json";

declare function get(
        $context as map:map,
        $params  as map:map
) as document-node()*
{

    let $output-type := map:put($context, "output-type", "application/json")
    return
        document {
            "{ ""name"": ""tj"" }"
        }
};

如果我在文档节点中返回一个JSON对象树,即将文本包装在xdmp:unquote中,则返回正常。但是,我想要做的是返回直接的JSON,而不必解析它。我试图节省必须对我期待JSON的响应进行XML到JSON转换。但是必须使用xdmp:unparse或json:transform-to-json导致相同的额外时间,我试图避免。

我是否了解output-type属性应该表示什么?

1 个答案:

答案 0 :(得分:3)

资源扩展的正确密钥是输出类型,因为您的扩展可以返回多个文档。

http://docs.marklogic.com/guide/rest-dev/extensions#id_84661

转换的关键是输出类型。

希望有帮助,