Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-处理提供JSON文档的Marklogic eval响应_Java_Marklogic - Fatal编程技术网

Java-处理提供JSON文档的Marklogic eval响应

Java-处理提供JSON文档的Marklogic eval响应,java,marklogic,Java,Marklogic,我有一个MarkLogic XQuery eval调用,它返回字符串列表。我使用下面的代码来处理结果。我有另一个调用,它返回一个Json文档列表,但我不知道如何让EvalResult给我一个JsonDocument文档。如何更改以下代码以处理Json文档 public static ArrayList<String> getStringList(DatabaseClient client, String query) { ArrayList<String

我有一个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;
   }
publicstaticarraylistgetstringlist(数据库客户端,字符串查询)
{
ArrayList字符串=新的ArrayList();
ServerEvaluationCall eval=client.newServerEval();
evalResulterator eri=eval.xquery(query.eval();
while(eri.hasNext())
{
EvalResult er=eri.next();
字符串s=er.getString();
字符串。添加(s);
}
返回字符串;
}

首先,我建议您将eval作为最后手段,因为它可能会打开安全漏洞。如果从不从客户端发送要在服务器上执行的代码,则不可能进行注入攻击。先从开箱即用的特性开始,如果这些还不够,考虑写A而不是使用EVAL。两个例子是和

但要回答您的问题,请更改以下内容:

     String s = er.getString();
为此:

     JacksonHandle handle = er.get(new JacksonHandle());
     JsonNode json = handle.get();
或者通过这个快捷方式:

     JsonNode json = er.getAs(JsonNode.class);
有关完整示例,请参见myArray和myObject(当然还有)和的处理


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

非常感谢-我会试试的。是的,那很有效!!仅供参考-我非常接近-我尝试过的(除其他外)是er.getAs(JacksonHandle.class),但这只是一个例外。