2016-05-11 2 views
1

Я хочу получить jsonstring в моем методе. I'am пытается это:Как я могу получить json из xquery в java?

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) 

Если я выполнить XQuery в процессоре запросов Basex, я получаю

{ 
    "a":"asd" 
} 

Как я могу это сделать? Благодаря!

ответ

0

Конверсия JSON не является стандартной функцией XQuery. См. BaseX реализует его как расширение поставщика. см. https://www.w3.org/TR/xquery-31/ для совместимых процессоров. Выход JSON не включен.

У вас нет реализации XQuery, которую вы используете. Я предлагаю переформулировать вопрос в форме создания JSON с использованием вашего конкретного процессора XQuery.

Лучшее, что вы можете сделать в чистом XQuery, - это найти или написать модуль, который преобразуется в Json, реализованный в XQuery и выводимый как текст.

Смежные вопросы