gpt4 book ai didi

Java - 处理给出 JSON 文档的 Marklogic eval 响应

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:44 24 4
gpt4 key购买 nike

我有一个返回字符串列表的 MarkLogic XQuery eval 调用。我使用下面的代码来处理结果。我有另一个返回 Json 文档列表的调用,但我看不到如何让 EvalResult 给我一个 JsonDocument 文档。如何更改以下代码以处理 Json 文档?

   public static ArrayList<String> getStringList(DatabaseClient client, String query)
{
ArrayList<String> strings = new ArrayList<String>();
ServerEvaluationCall eval = client.newServerEval();
EvalResultIterator eri = eval.xquery(query).eval();
while (eri.hasNext())
{
EvalResult er = eri.next();
String s = er.getString();
strings.add(s);
}
return strings;
}

最佳答案

首先,我建议您仅将 eval 用作最后的手段,因为它可能会打开一个安全漏洞。如果您从不从客户端发送要在服务器上执行的代码,则注入(inject)攻击是不可能的。首先从开箱即用的功能开始,如果这些还不够,请考虑编写 resource extension而不是使用评估。两个例子是 ResourceExtensionJavascriptResourceExtension .

但要回答您的问题,请更改此设置:

     String s = er.getString();

为此:

     JacksonHandle handle = er.get(new JacksonHandle());
JsonNode json = handle.get();

或此快捷方式:

     JsonNode json = er.getAs(JsonNode.class);

有关完整示例,请参阅处理 myArray 和 myObject EvalTest.evalAndInvokeXQuery (当然还有 runAndTestXQuery )和 evaltest.xqy .

无论您是从文档读取、搜索还是评估中获取 JSON 结果,这些 Jackson 句柄的工作方式都是一样的。您可以阅读有关 io 快捷方式的更多信息 here .有关 Jackson 的更多示例代码,请参阅 JacksonHandleExample , JacksonHandleTest , JacksonStreamTest , 和 JacksonDatabindTest .

关于Java - 处理给出 JSON 文档的 Marklogic eval 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42704444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com