Вам понадобится ObjectMapper
(от jackson-databind
)
и YAMLFactory
(от jackson-dataformat-yaml
).
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
Тогда это просто: просто прочитайте файл YAML, измените его содержимое и запишите файл YAML.
Поскольку в вашем примере очень простая структура объектов,
вы можете предпочесть быстрое и грязное моделирование, используя Map<String, Object>
.
// read YAML file
Map<String, Object> user = objectMapper.readValue(new File("user.yaml"),
new TypeReference<Map<String, Object>>() { });
// modify the address
Map<String, Object> address = (Map<String, Object>) user.get("address");
address.put("line1", "Your address line 1");
address.put("line2", "Your address line 2");
address.put("city", "Bangalore");
address.put("zip", 560010);
// write YAML file
objectMapper.writeValue(new File("user-modified.yaml"), user);
Если бы у вас была более сложная структура объекта,
тогда вы должны сделать более объектно-ориентированное моделирование
написав несколько POJO классов (User
и Address
).
Но общая идея все та же:
// read YAML file
User user = objectMapper.readValue(new File("user.yaml"), User.class);
// modify the address
Address address = user.getAddress();
address.setLine1("Your address line 1");
address.setLine2("Your address line 2");
address.setCity("Bangalore");
address.setZip(560010);
// write YAML file
objectMapper.writeValue(new File("user-modified.yaml"), user);