2011-01-09 16 views
6

Używam gry! framework i mam model (Entity), który ma zmienną typu Map.Jak zdefiniować mapę w pliku YAML w grze! struktura?

Aby wykonać pewne testy, ładuję plik YAML za każdym razem, gdy uruchamiam aplikację, ale nie znam składni do zdefiniowania mapy.

powiedzmy mam tej klasy

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

Co by mój plik YAML wygląda? Próbowałem tego:

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

To jedna z wielu moich prób. Nie znam składni i nie mogę jej znaleźć w Internecie. Myślę, że Play! używa SnakeYAML jako parser YAML.

W dokumencie znalazłem kilka przykładów, ale żaden z nich nie zadziała.

W mojej aplikacji wszystko działa oprócz tego, że zmienna mapy (arg3 w przykładzie) ma rozmiar 0 elementu.

Dzięki.

+0

Zgodnie z dokumentacją SnakeYAML i dokumentacją Play prawidłową notacją jest użycie znaków zapytania. Jednak próbowałem uruchomić twój kod w ten sposób, i chociaż kompiluje się, nie ma żadnych wpisów! Będę dalej kopać. – Codemwnci

+0

Czy to działa, gdy używasz znaków zapytania? –

+0

Próbowałem ponownie, używając znaków zapytania. Kompiluje się, ale moja mapa zwraca wartość null, gdy próbuję uzyskać wartość jednego z kluczy określonych w pliku YAML. –

Odpowiedz

6

Zgodnie z tym wątkiem na Google Groups wydaje się, że potrzebna jest składnia, aby użyć znaku zapytania.

Wątek ma działającą mapę w następującej składni.

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

Tak, myślę, że Twój przykład byłoby

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

Ja testowałem to jednak i to nie działa! Sugerowałbym zgłoszenie błędu, aby to sprawdzić, ponieważ cała dokumentacja wskazuje na to, że jest poprawna.

+0

Poprawiłem moje pytanie. Ale znalazłem dokładnie ten sam wątek w Grupach dyskusyjnych Google i nie zadziałało ... –

+0

To nie działa, ale jest zaakceptowaną odpowiedzią! WAT? –