У меня есть некоторые файлы конфигурации в формате JSON, и мне нужно проанализировать их в программе, написанной на groovy.Поскольку файлы должны быть удобочитаемыми, я бы хотел использовать синтаксис LAX (и синтаксический анализатор), чтобы мне не нужно было заключать в кавычки каждый ключ и значение, а также использовать комментарии.
Но как-то, когда я анализирую файл JSON, я получаю неправильные ключи в полученной карте.
Вот пример.
Файл JSON (я сохранил его как a.json) -
{
key1: aaa,
key2: bbb
}
Программа для его анализа
package test.json;
import groovy.json.JsonParserType;
import groovy.json.JsonSlurper;
public class JsonParser {
static void main(String[] args) {
JsonSlurper slurper = new JsonSlurper().setType(JsonParserType.LAX)
def config = slurper.parse(new File('a.json'))
println "key1: ${config.key1}"
println "key2: ${config.key2}"
for (e in config) {
println "*** '${e.key}' (${e.key.class}) = '${e.value}' (${e.value.class})"
}
}
}
Когда я запускаю программу, я получаю следующий вывод:
key1: aaa
key2: null
*** 'key1' (class java.lang.String) = 'aaa' (class java.lang.String)
*** '
key2' (class java.lang.String) = 'bbb
' (class java.lang.String)
Вы видите, что второй ключ неанализируется как 'key2', но содержит пробелы и разрыв строки.
Как заставить синтаксический анализатор удалить пробелы из ключей и значений, чтобы я получил 'key2'='bbb'
(как и следовало ожидать для файлавыше)?
Если я заключаю каждый ключ и значение в двойные кавычки, все анализируется, как и ожидалось, т.е. я получаю 'key2'='bbb'
.Но я думал, что с парсером LAX они мне не понадобятся.