4520 shaares
2 résultats
taggé
lire
La solution avec Jackson est extrêmement élégante :
Les dépendances :
dependencies {
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.1-1'
compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.7.1-2'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.1'
}
Créer les entités qui vont recevoir la configuration Yaml :
data class UniverseSizeDto(val maxGalaxies: Int, val maxSystems: Int, val maxPlanets: Int)
data class ResourcesDto(val crystal: Int, val gas: Int, val energy: Int)
data class StarterPlanetDto(val resources: ResourcesDto)
data class ConfigDto(val universeSize: UniverseSizeDto, val starterPlanet: StarterPlanetDto, val roundTime: Int)
Le code de chargement du fichier :
fun loadFromFile(path: Path): ConfigDto {
val mapper = ObjectMapper(YAMLFactory()) // Enable YAML parsing
mapper.registerModule(KotlinModule()) // Enable Kotlin support
return Files.newBufferedReader(path).use {
mapper.readValue(it, ConfigDto::class.java)
}
}