2016-07-28 181 views
0

我期待枚舉FTL(freeMarker模板語言)中的根對象。用於所有散列數組,所有序列數組以及所有標準鍵值對象。FreeMarker:枚舉根

我需要JSON格式的輸出。 我已經找到了張貼代碼JSON枚舉: http://ericbrandel.com/2013/03/28/freemarker-container-to-json/

<#macro objectToJsonMacro object> 
<@compress single_line=true> 
    <#if object?is_hash || object?is_hash_ex> 
    <#assign first="true"> 
    { 
    <#list object?keys as key> 
     <#if first="false">,</#if> 
     <#assign value><@objectToJsonMacro object=object<key> /></#assign> 
     "${key}" : ${value?trim} 
     <#assign first="false"> 
    </#list> 
    } 
    <#elseif object?is_enumerable> 
    <#assign first="true"> 
    [ 
    <#list object as item> 
     <#if first="false">,</#if> 
     <#assign value><@objectToJsonMacro object=item /></#assign> 
     ${value?trim} 
     <#assign first="false"> 
    </#list> 
    ] 
    <#else> 
    "${object?trim}" 
    </#if> 
</@compress> 
</#macro> 

但代碼不起作用在FreeMarker的最新版(拋出一個錯誤)。

我希望任何人都可以提供幫助。另外,我沒有看到「獲取」根對象的方法。

感謝, 丹Linstedt

+0

而且它拋出什麼樣的錯誤? –

+0

數據模型(我想這就是你所說的根對象)可以用'.data_model'來訪問(參見http://freemarker.org/docs/ref_specvar.html)。 – ddekany

回答

0

我加入一個公共的方法來我的根對象,JSON編碼本身解決了這個。我使用Gson來編組對象。

/** 
* @return JSON serialized version of this object. 
*/ 
public String toJson() 
{ 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    //gsonBuilder.setPrettyPrinting(); 
    //gsonBuilder.disableHtmlEscaping(); 
    // .. and whatever else you need Gson to do 
    return gsonBuilder.create().toJson(this); 
} 

我並不需要它在FreeMarker的,但你可以訪問它想:

${toJson()}