Chcę przeczytać dokument YAML na mapie obiektów niestandardowych (zamiast map, które domyślnie snakeYaml ma). Więc tak:Parsowanie dokumentu YAML z mapą w katalogu głównym przy użyciu snakeYaml
19:
typeID: 2
limit: 300
20:
typeID: 8
limit: 100
Lepiej być załadowany do mapy, która wygląda tak:
Map<Integer, Item>
gdzie pozycja jest:
class Item {
private Integer typeId;
private Integer limit;
}
nie mogłem znaleźć sposób, aby to zrobić z snakeYaml i nie mogłem znaleźć lepszej biblioteki do tego zadania.
Dokumentacja ma tylko przykłady z mapami/Kolekcje zagnieżdżonych wewnątrz innych obiektów, dzięki czemu można wykonać następujące czynności:
TypeDescription typeDescription = new TypeDescription(ClassContainingAMap.class);
typeDescription.putMapPropertyType("propertyNameOfNestedMap", Integer.class, Item.class);
Constructor constructor = new Constructor(typeDescription);
Yaml yaml = new Yaml(constructor);
/* creating an input stream (is) */
ClassContainingAMap obj = (ClassContainingAMap) yaml.load(is);
Ale jak mam iść na temat definiowania formatu Mapa kiedy jest u podstaw dokument?
Wow, obsługa YAML w Javie jest apelująca. Chociaż to rozwiązanie działa, byłoby to bolesne, gdy trzeba sobie poradzić ze strukturami zagnieżdżonymi. Chyba po prostu skonwertuję wszystko na JSON i użyję Jacksona do analizy. – Justas
Tak. Yaml parsowanie w java (/ scala) * jest * okropne. Pochodzący z Pythona, gdzie jest "wolny". – javadba