温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Parse json using liftweb in scala with no usable value
json lift scala

其他 - 在scala中使用liftweb解析json没有可用值

发布于 2021-02-09 06:38:23

我正在使用liftweb从scala中的String解析JSON,某些记录有3个字段

val a = {"name": "Alice", "age": 21, "job": "nurse"}

但是其他一些只有2场

val b = {"name": "Bob", "age": 30}

我创建了案例类Person(name:String,age:Long,job:String),当我调用parse(a)时,它成功返回值,但是当我调用parse(b)时,它出现了异常

net.liftweb.json.MappingException: No usable value for algorithm
Did not find value which can be converted into java.lang.String

查看更多

提问者
Loc Tran
被浏览
0
jcern 2015-12-09 11:51

如果您使用参数类型,job:String则会遇到问题,因为这将要求参数具有值-而在您的示例中则没有。

我假设我们要使anOption[String]和在下面的示例中仅添加多个构造函数以匹配您的参数。这样的事情应该起作用:

case class Person(name: String, age: Long, job: Option[String]){
  def this(name: String, age: Long) = this(name, age, None)
}

如果你有一个默认值,并希望job成为一个String只是改变None任何你想用默认值。

在那之后,您在两种情况下都可以像上面一样进行解析。