【发布时间】:2016-05-25 15:51:30
【问题描述】:
我正在尝试使用 play-json 从 GitHub API 解析 json,但在 Pull Requests 上遇到了 merge_commit_sha 字段的问题(顺便说一下,我知道该字段已被弃用,但不想讨论这个问题在这个解析问题中!)。不幸的是,merge_commit_sha 字段在某些情况下返回为空字符串:
"merge_commit_sha": ""
这就是declared in my case class字段的样子:
merge_commit_sha: Option[ObjectId],
我有一个implicit Format[ObjectId],它不能容忍空字符串,因为这不是 Git 哈希 id 的有效值。我还使用了一个 play-json 宏生成的 Read[PullRequest],我想继续使用它,而不是单独声明拉取请求中每个字段的读取。
由于我已将该字段声明为选项,我希望将 "merge_commit_sha": "" 读取为值 None,但这不是当前发生的情况 - 存在一个字符串,所以 Format[ObjectId]被调用,并返回一个JsFailure。
我尝试过的一件事是声明一个具有所需行为的隐式 Format[Option[ObjectId]],但它似乎没有被宏生成的 Read[PullRequest] 使用。
【问题讨论】:
标签: scala playframework scala-option play-json