scala – 当需要的字段丢失时,是否可以使json4s不抛出异常?
发布时间:2020-12-16 09:13:04 所属栏目:安全 来源:网络整理
导读:当需要的字段丢失时,是否可以使json4s不抛出异常? 当我从raw json字符串“提
当需要的字段丢失时,是否可以使json4s不抛出异常?
当我从raw json字符串“提取”对象时会抛出像这样的异常 org.json4s.package$MappingException: No usable value for pager No usable value for rpp Did not find value which can be converted into byte at org.json4s.reflect.package$.fail(package.scala:98) at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$buildCtorArg(Extraction.scala:388) at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$11.apply(Extraction.scala:396) 有可能只是让它为空吗? 解决方法
这很简单,你必须使用选项及其潜力,有些和无.
val json = ("name" -> "joe") ~ ("age" -> Some(35)); val json = ("name" -> "joe") ~ ("age" -> (None: Option[Int])) 请注意,在上述情况下,您的选项将执行匹配.如果它是None,它将完全从字符串中删除,因此它不会反馈为null. 在相同的模式中,要解析不完整的JSON,您可以使用带有Option的案例类. case class someModel( age: Option[Int],name: Option[String] ); val json = ("name" -> "joe") ~ ("age" -> None); parse(json).extract[someModel]; 有一种不会抛出任何异常的方法,那就是extractOpt parse(json).extractOpt[someModel]; 用Scala API复制的方法是使用scala.util.Try: Try { parse(json).extract[someModel] }.toOption (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |