Как распечатать JSON на шаблоне golang?

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

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

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

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

{{ marshal .Arr }}

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

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

person Chakradar Raju    schedule 31.01.2014    source источник


Ответы (1)


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

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

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

"marshal": func(v interface {}) template.JS {
  a, _ := json.Marshal(v)
  return template.JS(a)
},
person Chakradar Raju    schedule 31.01.2014
comment
Чуть понятнее: encodedValue := json.Marshal(complexValue); replaceableValue := template.JS(encodedValue) - person Dustin Oprea; 06.08.2016