У меня есть требование, когда мне нужно извлечь весь узел из JSON для преобразования с использованием Smooks с шаблоном freemarker.
Я могу извлечь узлы для XML с помощью @@ markup, но, похоже, не могу найти способ сделать это для JSON.
Например:
У меня есть этот JSON
{
"header" : {
"orderid" : 1,
"date&time" : "Wed Nov 15 13:45:28 EST 2006",
"customerdetails" : {
"username" : "HenkJansen",
"firstname" : "Henk",
"lastname" : "Jansen",
"state" : "SD"
}
}
}
Мне нужно извлечь весь узел customerdetails
Это мой шаблон бесплатного маркера с использованием smooks
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:json="http://www.milyn.org/xsd/smooks/json-1.1.xsd"
xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
<params>
<param name="stream.filter.type">SAX</param>
<param name="default.serialization.on">false</param>
</params>
<json:reader rootName="json" keyWhitspaceReplacement="_">
<json:keyMap>
<json:key from="date&time" to="date_and_time" />
</json:keyMap>
</json:reader>
<resource-config selector="json">
<resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>
<ftl:freemarker applyOnElement="json">
<ftl:template>
<!--
${json.header.customerdetails}
-->
</ftl:template>
</ftl:freemarker>
Я ожидаю, что результат будет
{
"username" : "HenkJansen",
"firstname" : "Henk",
"lastname" : "Jansen",
"state" : "SD"
}
Но я получаю эту ошибку
FreeMarker template error:
Only elements with no child elements can be processed as text.
This element with name "customerdetails" has a child element named:
username
Как я могу решить это?