2011-01-09 3 views
6

Ich benutze das Spiel! Rahmen und ich habe ein Modell (eine Entität), die eine Variable vom Typ Map hat.So definieren Sie eine Map in einer YAML-Datei im Play! Rahmen?

Um einige Tests durchzuführen, lade ich jedes Mal eine YAML-Datei, wenn ich die Anwendung starte, aber ich kenne die Syntax zum Definieren einer Map nicht.

Lassen Sie uns sagen, ich habe diese Klasse

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

Was wie meine YAML-Datei aussehen würde? Ich versuchte dies:

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

Dies ist eine meiner vielen Versuchen. Ich kenne die Syntax nicht und kann sie nicht im Internet finden. Ich denke, das Spiel! verwendet SnakeYAML als YAML-Parser.

In dem Dokument habe ich einige Beispiele gefunden, aber keiner von ihnen wird funktionieren.

In meiner Anwendung funktioniert alles, außer dass die Map-Variable (arg3 im Beispiel) eine Größe von 0 Element hat.

Danke.

+0

Gemäß der SnakeYAML-Dokumentation und der Play-Dokumentation ist die korrekte Schreibweise die Verwendung von Fragezeichen. Allerdings habe ich versucht, Ihren Code auf diese Weise auszuführen, und obwohl es kompiliert, hat es keine Einträge! Ich werde weiter graben. – Codemwnci

+0

Funktioniert es, wenn Sie die Fragezeichen verwenden? –

+0

Ich versuchte es erneut mit den Fragezeichen. Es kompiliert, aber meine Map gibt null zurück, wenn ich versuche, den Wert eines der in der YAML-Datei angegebenen Schlüssel abzurufen. –

Antwort

6

Nach diesem Thread auf Google Groups scheint es, dass die Syntax, die Sie benötigen, ein Fragezeichen ist.

Der Thread verfügt über eine Arbeitszuordnung in der folgenden Syntax. So

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

, ich denke, Ihr Beispiel

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

Ich habe dies jedoch getestet würde und es funktioniert nicht! Ich würde vorschlagen, einen Fehler zu machen, um einen Blick darauf zu werfen, denn alle Dokumentationspunkte sind korrekt.

+0

Ich habe meine Frage korrigiert. Aber ich habe den gleichen Thread in Google Groups gefunden und es hat nicht funktioniert ... –

+0

Das funktioniert also nicht, aber ist die akzeptierte Antwort! WAT? –