Используя freemarker, как я могу извлечь весь узел json - PullRequest
0 голосов
/ 04 мая 2019

У меня есть требование, когда мне нужно извлечь весь узел из 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&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

Как я могу решить это?

...