使用freemarker,我如何提取整个json节点

时间:2019-05-03 21:19:28

标签: json freemarker smooks

我有一个需求,我需要从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&amp;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

我该如何解决?

0 个答案:

没有答案