おそらくそれは
、ことはできませんが、私はFreeMarkerのFreemarkerのは、JSONとして文字列を解析
元にマップにJSON文字列を変換したい:
<#assign test = "{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}">
とを得ることができますテキストこの文字列のキー
おそらくそれは
、ことはできませんが、私はFreeMarkerのFreemarkerのは、JSONとして文字列を解析
元にマップにJSON文字列を変換したい:
<#assign test = "{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}">
とを得ることができますテキストこの文字列のキー
使用?eval
。これは、JSONマップが有効なFreeMarker式(update:null
がFreeMarker 2.3.xでは認識されない点を除いて)のために動作します。
<#assign test = "{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}">
<#assign m = test?eval>
${m.foo} <#-- prints: bar -->
<#-- Dump the whole map: -->
<#list m?keys as k>
${k} => ${m[k]}
</#list>
(ところで、あなたは'
の代わり"
で文字列を引用する場合\"
を使用する必要はありません。)
JSONを読み取るtemplateを定義/実装する必要があるようです。コード内
何怠惰index_of程度と '" 'バインドを削除する:P –
をすることができます<#assign map = jsponparse(mystring)> –
を呼び出す前に、このドキュメントhttp://を参照して、メソッドコールhttp://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_methodcallで実行できるかどうか教えてください。 freemarker.sourceforge.net/docs/pgui_datamodel_method.htmlもっと便利な –
freemarker.sourceforge.net/docs/pgui_datamodel_method.html
:
// a class to parse Json, just add this method to your rendered template data
// with data.put("JsonParser", new FreemarkerJsonParser());
// or in shared variables http://freemarker.sourceforge.net/docs/pgui_config_sharedvariables.html
public class FreemarkerJsonParser implements TemplateMethodModel{
@Override
public Object exec(List args) throws TemplateModelException {
return new Gson().fromJson(s, new TypeToken<Map<String, String>>() {}.getType());((String) args.get(0));
}
}
テンプレートで:
<#assign map = JsonParser("{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}")>
${map.text}
'test'がヌル値を持っているのか、それとも未定義なのですか? –
' test'がt彼は文字列 "ヌル"または "未定義"ですか?有効なFTL式もありません(ただし、将来は「null」となります)ので、明示的にチェックする必要があります。 'undefined'は有効なJSON式でもありません。また、私の答え、感謝を更新しました。 – ddekany
jsonにUNICODEがある場合、これは動作しません。 – Ahmed