Tengo un archivo yaml, por ejemplo:
# this is the part I don't care about config: key-1: val-1 other-config: lang: en year: 1906 # below is the only part I care about interesting-setup: port: 1234 validation: false parts: - on-start: backup on-stop: say-goodbye También tengo una clase POJO que es adecuada para la parte interesting-setup
public class InterestingSetup { int port; boolean validation; List<Map<String, String>> parts; } Quiero cargar solo la parte interesting-setup (de manera similar a @ConfigurationProperties("interesting-setup") en Spring)
Actualmente lo estoy haciendo así:
Map<String, Object> yamlConfig = yaml.load(yamlFile); # loading the whole file to Map with Object values Object interestingObject = yamlConfig.get("interesting-setup"); # loading 'interesting-setup' part as an object Map<String, Object> interestingMap = (Map<String, Object>); # Casting object to Map<String, Object> String yamlDumped = yaml.dump(interestingMap); # Serialization to String InterestingSetup finalObject = yaml.load(yamlDumped); # Getting final object from StringLa parte crucial es cuando tengo un Objeto (Map<String, Object>) y quiero enviarlo a mi clase final. Para hacer eso, necesito serializarlo en String, por lo que el proceso se ve así:
File -> Map<String, Object> -> Object -> Map<String, Object> -> String -> FinalClass y me gustaría evitar la deserialización y nuevamente la serialización de los mismos datos.
Entonces, ¿puedo usar Yaml de alguna manera para asignar Map<String, Object> a otra clase? ¿No puedo ver esto en una API?