Scala 2.12在这里。我正在尝试使用Lift-JSON将一些JSON反序列化为Scala对象,并且无法浏览Lift API。 请注意:我没有与Lift-JSON结婚,任何其他有效的解决方案都将被接受,只要我不必将任何重/核Play依赖项带入我的项目。
这是我正在尝试阅读的JSON文件:
{
"fizz" : "buzz",
"foo" : [
"123",
"456",
"789"
],
"bar" : {
"whistle" : 1,
"feather" : true
}
}
这是我的Scala对象层次结构:
case class Bar(whistle : Integer, feather : Boolean)
case class MyConfig(fizz : String, foo : Array[String], bar : Bar)
最后我对代码的最佳尝试是:
def loadConfig(configFilePath : String) : MyConfig = {
val configJson = Source.fromFile(configFilePath)
val parsedJson = parse(configJson.mkString)
MyConfig(???)
}
我需要进行验证,以便在JSON无效的情况下抛出异常。我是如何从parsedJson
中提取字段并使用它们为我的MyConfig
实例设置值的任何想法?以及如何进行验证?
答案 0 :(得分:1)
你试过parsedJson.extract[MyConfig]
吗?这直接来自this comment文档。如果您还没有,则需要指定对默认格式的隐式引用:
implicit val formats = DefaultFormats