Как определить карту в файле YAML в Play! фреймворк?

Я использую Play! framework, и у меня есть модель (Entity) с переменной типа Map.

Чтобы провести некоторые тесты, я загружаю файл YAML каждый раз, когда запускаю приложение, но я не знаю синтаксиса для определения карты.

Допустим, у меня есть этот класс

public class aClass {
    public int arg1;
    public String arg2;
    public Map<String, Integer> arg3;
}

Как бы выглядел мой файл YAML? Я пробовал это:

aClass(object1)
    arg1:   34
    arg2:   aString
    arg3:   [key1: value1, key2: value2] <- What do I do here?

Это одна из многих моих попыток. Я не знаю синтаксиса и не могу найти его в Интернете. Думаю, Play! использует SnakeYAML в качестве парсера YAML.

В документе я нашел несколько примеров, но ни один из них не работает.

В моем приложении все работает, за исключением того, что переменная Map (в примере arg3) имеет размер 0 элемента.

Спасибо.


person Marc-François    schedule 09.01.2011    source источник
comment
Согласно документации SnakeYAML и документации Play, правильная запись - использовать вопросительные знаки. Однако я попытался запустить ваш код таким образом, и хотя он компилируется, в нем нет записей! Я буду копать дальше.   -  person Codemwnci    schedule 09.01.2011
comment
Работает ли при использовании вопросительных знаков?   -  person Marc-François    schedule 10.01.2011
comment
Я снова попробовал использовать вопросительные знаки. Он компилируется, но моя карта возвращает null, когда я пытаюсь получить значение одного из ключей, указанных в файле YAML.   -  person Marc-François    schedule 10.01.2011


Ответы (1)


Согласно этой теме на Группы Google кажется, что синтаксис, который вам нужен, заключается в использовании вопросительного знака.

У потока есть рабочая карта со следующим синтаксисом.

Bloc(b2): 
  labelSeries: testDeValeur 
  criterias: 
    ? key1 
    : value1 
    ? key2 
    : value2 

Итак, я думаю, ваш пример был бы

aClass(object1)
  arg1:   34
  arg2:   aString
  arg3:   
    ? key1
    : value1
    ? key2
    : value2

Однако я проверил это, и это не работает! Я бы посоветовал поднять ошибку, чтобы разобраться в этом, потому что вся документация указывает на то, что это правильно.

person Codemwnci    schedule 09.01.2011
comment
Я поправил свой вопрос. Но я нашел ту же тему в группах Google, и это не сработало ... - person Marc-François; 09.01.2011
comment
Так что это не работает, но это общепринятый ответ! WAT? - person Jens Schauder; 01.01.2015