【问题标题】:Parse json using liftweb in scala with no usable value在没有可用值的scala中使用liftweb解析json
【发布时间】:2016-03-14 05:00:42
【问题描述】:

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

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

但其他一些只有 2 个字段

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

我创造了 案例类人(姓名:字符串,年龄:长,工作:字符串) 当我调用 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

【问题讨论】:

    标签: json scala lift


    【解决方案1】:

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

    我假设我们想将其设为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 更改为默认值即可。

    之后,像上面那样进行解析应该适用于这两种情况。

    【讨论】:

      【解决方案2】:

      使用 lift-json_2.11 版本 2.6.3 来解决这个问题。我在 3.2.0

      版本中也遇到过这个问题

      【讨论】:

      • 您能否添加一个代码示例,详细说明如何使用该包?
      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多