Я не могу получить #evaluate для установки переменной с помощью любого принятого решения, которое я видел для преобразования строки JSON в карту с использованием Velocity in Confluence.
У меня есть строка JSON, поступившая из другой системы, которую яиспользовать для генерации динамических данных.Во время разработки я мог работать с картой напрямую:
#set($textMapRaw = [{"ace":"clubs"}])
$textMapRaw.get(0).ace
Последняя строка отображается как "клубы".
Я ожидал использовать #evaluate, чтобы превратить живые данные вмассив объектов.Однако, похоже, что #evaluate не помещает объявленную переменную обратно в область действия, когда я что-то с ней делаю.Вот та же карта в виде строки:
#set($textMapHtml = '[{"ace":"clubs"}]')
#set($evalHtml = '#set($myMapHtml = '+ $textMapHtml +')')
evalHtml = $evalHtml<br/>
#evaluate($evalHtml)
$myMapHtml.get(0).ace
Последняя строка отображается как "$ myMapHtml.get (0) .ace".
Я знаю, что $ myMapHtml оцениваетсяпотому что я получаю трассировку стека оценки, когда я не добавляю Html
в конец, чтобы избежать автоматически сбегающих махинаций Confluence.
Я пробовал это с экранированием хэша в наборе, используя набор $ {хэш}.Я пробовал одинарные и двойные кавычки.Я попробовал сделать это, просто установив строку с помощью метода execute:
#evaluate('#set($dippity = "doo")')
$dippity
#set($hash = '#')
#evaluate("${hash}set($blue = 'moon')")
$blue
Независимо от того, что я делаю с любым утвержденным кодом #evaluate, он никогда не оценивается как область действия в Confluence.Я всегда получаю результат, идентичный неопределенной переменной.
Примечание. В нашей среде я не могу сделать обходной путь в Java и вставить его в шаблон.Мне нужно найти чистое решение в шаблоне.