Когда я пытаюсь использовать змею для вывода Yaml из интерполированных строк Groovy, вместо этого он печатает имя класса.
Например:
@Grab(group='org.yaml', module='snakeyaml', version='1.16')
import org.yaml.snakeyaml.Yaml
Yaml yaml = new Yaml();
def a = "a"
def list = ["$a"]
def s = yaml.dump(list)
Отпечатки:
- !!org.codehaus.groovy.runtime.GStringImpl
metaClass: !!groovy.lang.MetaClassImpl {}
Я предполагаю, что это как-то связано с тем фактом, что GStrings преобразуются в Strings, когда они используются, и я подозреваю, что snakeyaml использует своего рода самоанализ для определения класса объекта.
Есть ли лучшее решение, чем вызов toString()
для всех строк GString?