我想在我的方法中获得jsonstring。我试着这样做:
XQConnection conn = baseXDataSource.getConnection();
XQPreparedExpression expr = conn.prepareExpression
("declare option output:method 'json'; \n" +
"<json objects=\"json\">\n" +
"<a>asd</a>\n" +
"</json>");
XQSequence result1 = expr.executeQuery();
result1.next();
XMLStreamReader result = result1.getSequenceAsStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter stringWriter = new StringWriter();
transformer.transform(new StAXSource(result), new StreamResult(stringWriter));
return stringWriter.toString();
但是得到了异常:
javax.xml.xquery.XQException: The prefix "output" is unknown in this static context.
net.xqj.basex.bin.I.getNamespaceURI(Unknown Source)
如果我在basex查询处理器中执行xquery,我会得到
{
"a":"asd"
}
我该怎么做呢?谢谢!
发布于 2016-08-05 14:36:16
JSON转换不是XQuery标准功能。请参阅BaseX将其作为供应商扩展实现。有关兼容处理器必须支持的内容,请参阅https://www.w3.org/TR/xquery-31/。不包括JSON输出。
您还没有正在使用的XQuery实现。我建议将问题重新表述为如何使用特定的XQuery处理器生成JSON。
在纯XQuery中,您能做的最好的事情就是找到或编写一个转换为Json的模块,该模块用XQuery实现并输出为文本。
https://stackoverflow.com/questions/37166110
复制相似问题