2011-01-09 2 views
6

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

Чтобы выполнить некоторые тесты, я загружаю файл 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? 

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

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

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

Спасибо.

+0

Согласно документации SnakeYAML и документации по воспроизведению, правильная нотация заключается в использовании вопросительных знаков. Тем не менее, я попытался запустить ваш код таким образом, и хотя он компилируется, он не имеет записей! Я буду рыть. – Codemwnci

+0

Работает ли это при использовании вопросительных знаков? –

+0

Я попытался снова использовать вопросительные знаки. Он компилируется, но моя Map возвращает null, когда я пытаюсь получить значение одного из ключей, указанных в файле YAML. –

ответ

6

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

Нить имеет рабочую карту в следующем синтаксисе.

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

Так что, я думаю, ваш пример будет

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

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

+0

Я исправил свой вопрос. Но я нашел тот же самый поток в Google Groups, и он не работал ... –

+0

Так что это не сработает, но это принятый ответ! WAT? –

Смежные вопросы