在scala中使用liftweb解析json没有可用的值

时间:2015-12-09 03:03:21

标签: json scala lift

我正在使用liftweb来解析scala中的字符串中的JSON,其中一些记录有3个字段

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

但其他一些只有2个字段

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

我创造了 case class 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

2 个答案:

答案 0 :(得分:2)

如果你创建参数类型Option[String],那么你将会遇到问题,因为这需要参数有一个值 - 而在你的例子中它没有。

我假设我们要将其设为case class Person(name: String, age: Long, job: Option[String]){ def this(name: String, age: Long) = this(name, age, None) } ,并在下面的示例中添加多个构造函数以匹配您的参数。这样的事情应该有效:

job

如果您有默认值,并希望String成为None,则只需将 "writeError": { "code": 16755, "errmsg": "Can't extract geo keys: ... Loop is not valid: ... ... Edges 11 and 13 cross. Edge locations in degrees: [3.8342850, 43.6212770]-[3.8345610, 43.6218040] and [3.8345340, 43.6217530]-[3.8345610, 43.6218030] 更改为您想要的任何内容。

之后,如上所述解析应适用于两种情况。

答案 1 :(得分:0)

使用lift-json_2.11版本 2.6.3 修复此问题。我还遇到了版本为 3.2.0

的问题