W jaki sposób wyodrębnić wszystkie elementy z pliku YAML ?
Używając biblioteki Jacksons YAML jestem w stanie wyświetlić zawartość pliku, np.:
Mój plik YAML:
users:
user1:
groups:
- Premium
user2:
groups:
- Mod
user3:
groups:
- default
groups:
Mod:
permissions:
test: true
inheritance:
- Premium
default:
permissions:
test.test: true
inheritance:
- Mod
Admin:
permissions:
test.test.test: true
inheritance:
- Mod
Kod :
File file = new File("yaml1.yaml");
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
Object obj = mapper.readValue(file, Object.class);
Map<?, ?> map = (Map<?, ?>) obj;
for(Entry<?, ?> entry : map.entrySet())
System.out.println(entry.getKey() + " -> " + entry.getValue());
```
Wynik:
```
users -> {user1={groups=[Premium]}, user2={groups=[Mod]}, user3={groups=[default]}}
groups -> {Mod={permissions={test=true}, inheritance=[Premium]}, default={permissions={test.test=true}, inheritance=[Mod]}, Admin={permissions={test.test.test=true}, inheritance=[Mod]}}
```
Chciałbym wyświetlić zawartość pliku w bardziej przyjaznej formie - np.:
```
users
user1 -> groups -> Premium
user2 -> groups -> Mod
user3 -> groups -> default
groups
Mod -> permissions -> test -> true
inheritance -> Premium
default -> permissions -> test.test -> true
inheritance -> Mod
Admin -> permissions -> test.test.test -> true
inheritance -> Mod
```
W jaki sposób mogę się dostać do tych zagnieżdżonych elementów ?
Wiem, że metoda ****readValue**** zwraca kolekcję map i list.
Mogę odczytać te elementy używając wielu zagnieżdżonych pętli ale w przypadku gdy nie wiem jak wygląda wnętrze pliku - nie jestem w stanie znaleźć uniwersalnego rozwiązania.