Yaml Parsen aus einer config-Datei
Dies ist das erste Zeit bin ich mit einem YAML-parser, und ich bin derzeit stecken an diesem Punkt
Habe ich eine config-Datei, die geht so etwas wie
Users
-Name:A
Id : x
Addr:10.0.0.1
-Name:B
Id :y
Addr:10.0.0.2
HomeAddress
City:bla bla
Country:bla bla
Office Address
City:abchd
Country:bha bha ba
So, ich dachte, der beste Weg, um zu analysieren, es wäre eine Liste wie diese.
List<Map<String, obj>> Object = (List<Map<String, obj>>) yaml.load(input);
Ziel war es, den Zugriff auf das Objekt durch Angabe einer Zeichenfolge. Wie Benutzername Ein, ich shld in der Lage sein, um erhalten Ihre id-und IP-addr (das ist das wichtigste für mich im moment). Aber als ich versuchte diese Erklärung, bekam ich eine Fehlermeldung wie diese
Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List
at Message.MessagePasser.<init>(MessagePasser.java:34)
Kann mir bitte jemand helfen Debuggen. Bei mir läuft bis zu einem Termin!!:(
InformationsquelleAutor ExceptionHandler | 2012-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den YAML-parser scheint wieder ein
Map
. So sollten Sie es verwenden, wie diese:Auch, was insbesondere YAML parser benutzt du?
Update 1: Wenn man sich die Dokumentation, die
load
Methode gibt eineList
oderMap
je auf die Inhalte der YAML-Datei. Wie Ihr YAML-Datei beginnt mit einem Schlüssel-Wert-Zuordnung (Users
) und kein array (-
), dieload
Methode gibt eineMap
was ist mit dem geeigneten Typ zurückgegeben werden, in diesem Fall.Finden Sie die aktualisierte Antwort.
Danke für die Klarstellung. Unter Ihren Tipp auf diese ein, ich meine modifizierten code, um so etwas wie
Map<String,nodeIP> obj = (Map<String,nodeIP>) yaml.load(input);
Aber trotz dieses, ich habe eine Fehlermeldung, die sagt, dass es nicht gewirkt java.util.ArrayList zu NodeIP-Typ (eine Klasse definiert, die von mir). So Können Sie vorschlagen, etwas zu ändern?irgendwelche Vorschläge?
Haben Sie einen Blick auf dieser Testfall (vor allem
testLoadMap
) und dem dazugehörigen YAML Datei zu sehen, wie das funktionieren würde. In kurzen, SnakeYaml braucht einige zusätzliche Informationen, wie Sie die JavaBeans-Karten, um eine YAML-element und zurück.InformationsquelleAutor Behrang
1) überprüfen Sie die Gültigkeit des YAML-hier: http://instantyaml.appspot.com/
2) Ihr Dokument sollte etwa so Aussehen: (man beachte die Leerzeichen !)
InformationsquelleAutor Andrey