我有一个需求,我需要从JSON提取整个节点以使用带有Freemarker模板的Smooks进行转换。
我能够使用@@ markup为XML提取节点,但是似乎找不到找到针对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
我该如何解决?