gpt4 book ai didi

java - 如何将 YAML 文件加载到案例类中?

转载 作者:行者123 更新时间:2023-11-30 06:00:12 26 4
gpt4 key购买 nike

我有一个 Scala 应用程序,需要读取 Yaml 文件并将其加载到 Scala 案例类中。我正在使用 Snakeyaml 来完成这项工作,但加载函数似乎无法使用我的案例类的构造函数。以下是我正在做的事情的示例:

Yaml 文件:

name: "Jon"
age: 50
gender: "male"

案例类别:

final case class Person(
name: String,
age: Int,
gender: String
)

提取和加载 YAML 的代码:

val text: String = scala.io.Source.fromFile(file).mkString
val yaml = new Yaml(new Constructor(implicitly[ClassTag[T]].runtimeClass))
yaml.load(text).asInstanceOf[T]

我收到以下错误:

 org.yaml.snakeyaml.constructor.ConstructorException: Can't construct a java object for tag:yaml.org,2002:case_classes.Person; exception=java.lang.InstantiationException: NoSuchMethodException:case_classes.Person.<init>()

我该怎么做才能消除错误?

最佳答案

显然,错误是因为 Snakeyaml 尝试调用无参数构造函数,然后使用 setter 设置所有属性。

这永远不适用于 Scala case 类,因为它们既没有无参数构造函数,也没有 setter 。 Source .

要解决此问题,您可以使用 circe-yaml .

关于java - 如何将 YAML 文件加载到案例类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52395899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com