2015-07-20 4 views
0

Я пытаюсь использовать freemarker для извлечения частей документа JSON и вывода их в новый документ. Я постоянно работаю в проблему, где FreeMarker жалуется:Как я могу вывести весь узел документа json в freemarker

SEVERE: Error executing FreeMarker template FreeMarker template error: For "${...}" content: Expected a string or something automatically convertible to string (number, date or boolean), but this has evaluated to an extended_hash (wrapper: f.c.HashLiteral$SequenceHash): ==> m.name [in template "testjson.ftl" at line 8, column 15]

Моего шаблон отлично работает, когда элемент m.name оценивает в строку, но я хочу, чтобы использовать его, чтобы извлечь весь узел. Шаблон:

<#assign m = doc?eval> 
<html> 
<head> 
    <title>Test JSON</title> 
</head> 
<body> 
    <h1>${m.name}</h1> 
</body> 
</html> 

Это прекрасно работает с простой структурой:

{ 
    "name" : "joe", 
    "number": "123-456-7890" 
} 

Но не сложный:

{ 
    "name" : 
     { 
      "first" : "joe", 
      "last" : "developer" 
     }, 
    "number":"123-456-7890" 
} 

Можно ли легко извлекать и выводить весь узел ?

Спасибо,

Ian

ответ

0

Нет, в настоящее время (2.3.23) нет поддержки JSON в FTL из коробки (кроме JSON побега). Конечно, можно написать «toJSON» TemplateMethodModelEx, который делает это.