YAML
ファイルをScala
から読み込もうとしていますが、以下のコードを使用してファイルを読み取ることができます。私がここに見る不利な点の1つは、私が使用しているYAML
ファイルとのマッピングを持つcase class
を作成する必要があることです。 YAML
の内容を変更するたびに、case class
を変更する必要があります。 Scalaで読み取る方法がありますかYAML
case class
を作成する必要があります。 (私はYAML
を読むためにPython
をも使用している。我々はYAML
構造でClass
をマッピングの制約を持っていない...とScala
で同様のことをしたいと思っている)「case class」なしでScalaのYAMLを読む
注:私が追加しますYAML
での新しいプロパティと私のcase class
が整合性を持っていない場合、私はUnrecognizedPropertyException
package yamlexamples
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
object YamlTest extends App{
case class Prop(country: String, state: List[String])
val mapper: ObjectMapper = new ObjectMapper(new YAMLFactory())
mapper.registerModule(DefaultScalaModule)
val fileStream = getClass.getResourceAsStream("/sample.yaml")
val prop:Prop = mapper.readValue(fileStream, classOf[Prop])
println(prop.country + ", " + prop.state)
}
sample.yaml
(これは、コードで動作します)
country: US
state:
- TX
- VA
sample.yaml
(これは例外がスローされます)
country: US
state:
- TX
- VA
continent: North America