Я пытаюсь проанализировать файл Json в Groovy, который содержит List
из String
с. Некоторые из этих строк содержат GString
форматирование, и поэтому я надеялся проанализировать их как GString
s вместо обычных String
s.
Например, следующий элемент description
будет содержать 1 GString
и 7 String
с:
{
... (other members)
"description": [
"This weapon features an alternate firing mode which shoots a tracker grenade.",
"As a free action, you can switch to the alternate fire mode.",
"Grenades can be fired up to 30 feet and detonate after 1 round.",
"Creatures within 15 feet of the grenade must make a Dexterity saving throw.",
"The save DC is equal to 8 + your Wisdom modifier + your proficiency bonus.",
"On a failed save, a creature takes ${variables}.get('grenadeDamage').get(${level}) damage and is considered tagged for 2 rounds.",
"On a success, a creature takes only half the damage and is not tagged.",
"Attacks with this weapon against tagged creatures have advantage.",
"However, if any creatures are tagged, this weapon can only attack those creatures."
],
"grenadeDamage": [
"1d4", "1d4", "1d4", "1d6", "1d6",
"1d6", "1d8", "1d8", "1d8", "1d10",
"1d10", "1d10", "2d6", "2d6", "2d6",
"4d4", "4d4", "4d4", "5d4", "5d4"
]
}
(я не привык форматировать GString
с, поэтому это может быть неправильно, в таком случае я извиняюсь)
A Map
дополнительных членов (например, "grenadeDamage"
в файле Json выше) будут содержать сопоставления их имен с соответствующими List
s. Затем они будут переданы в следующий класс:
class Gun
{
private int level
// ... (additional fields)
private List<?> description
private Map<String, List<String>> variables
// ... (Constructors, methods, etc.)
List<String> getDescription()
{
description
}
}
Мы надеемся здесь преобразовать любые GString
с List
в обычные String
с при вызове getDescription()
во время выполнения.
В данном примере, если поле level
было равно 7, 5-я строка description
заполнит ${variables}.get('grenadeDamage').get(${level})
значением 1d8
или 7-й элемент в grenadeDamage
.
Проблема заключается в том, что при использовании JsonSlurper
для анализа файла Json description
создается как List<String>
напрямую. В идеале я хотел бы проанализировать description
без немедленного принудительного ввода типа как String
.
Любые комментарии, советы и конструктивная критика приветствуются и приветствуются!