scala - 当json字符串中缺少某些属性时,将json字符串反序列化为case类
问题描述
当使用jackson的json字符串中缺少某些属性时,我正在尝试将json字符串反序列化为case类
例如。
case class ParsedPage(crawlDate: Option[String], domain: Option[String], url:Option[String], text: Option[String], abc: Option[Long])
val js1 = """ {
"crawlDate": "ddkke",
"domain": "0x20.be",
"url": "http://www.beer.com?title=99_Bottles_of_Beer&id=6214",
"text": "99 Bottles of Beer From Whitespace Subpages",
"abc": 123
}"""
val js2 = """ {
"domain": "0x20.be",
"url": "http://www.beer.com?title=99_Bottles_of_Beer&id=6214",
"text": "99 Bottles of Beer From Whitespace Subpages",
"abc": 123
}"""
应该给我
Ans1 = ParsedPage(Some("ddkke"), Some("0x20.be"), Some("http://www.beer.com?title=99_Bottles_of_Beer&id=6214", Some("99 Bottles of Beer From Whitespace Subpages"), Some(123))
Ans2 = ParsedPage(None, Some("0x20.be"), Some("http://www.beer.com?title=99_Bottles_of_Beer&id=6214", Some("99 Bottles of Beer From Whitespace Subpages"), Some(123))
我试过的
import com.fasterxml.jackson.databind._
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
val objectMapper = new ObjectMapper() with ScalaObjectMapper
objectMapper.registerModule(DefaultScalaModule)
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
val ans = objectMapper.readValue[ParsedPage](js)
获取异常:
com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple type, class ParsedPage] value failed: null
解决方案
推荐阅读
- c# - 下拉 onselectedindexchanged 事件未触发并且值保留在回发 c#
- javascript - 在javascript中组合两组数据
- string - MIPS:从读取的字节创建字符串
- javascript - JS - http请求文件包含js变量
- powershell - 通过 PowerShell 在 FtpWebRequest 期间永久接受证书
- java - 线程回调返回值
- sql - 如果值大于 SQL 中的先前值,则选择记录
- swift - Kotlin 是否有扩展类来像 Swift 一样接口
- php - 使用密码加密方案的 PHP 安全登录系统
- encoding - 不可映射的字符