2014-01-31 3 views
9

Мне нужен объект на стороне клиента, поэтому я преобразовал его в JSON с помощью json.marshal и напечатал его в шаблоне. Объект печатается как экранированная строка JSON.Как напечатать JSON на шаблоне golang?

Я ожидаю, что это будет var arr=["o1","o2"] но var arr="[\"o1\",\"o2\"]"

Я знаю, что могу JSON.parse в стороне клиента, но в том, что единственный способ?

Вот как я печатаю это в шаблоне:

{{ marshal .Arr }}

Вот мой предводитель функция:

"marshal": func(v interface {}) string { 
    a, _ := json.Marshal(v) 
    return string(a) 
}, 

ответ

16

В JS контекстных нормальные строки всегда получает убежали. Перед печатью я должен был преобразовать в template.JS.

Ссылка: http://golang.org/pkg/html/template/#JS

Это новая функция маршалом:

"marshal": func(v interface {}) template.JS { 
    a, _ := json.Marshal(v) 
    return template.JS(a) 
}, 
+0

Чуть более понятным: 'encodedValue: = json.Marshal (complexValue); replaceableValue: = template.JS (encodedValue) ' –

Смежные вопросы