我正在尝试使用 play-json 从 GitHub API 解析 json,并merge_commit_sha
在 Pull Requests 上遇到了该字段的问题(顺便说一下,我知道该字段已被弃用,但不想在此解析问题中讨论这个问题!) . 不幸merge_commit_sha
的是,在某些情况下,字段会以空字符串的形式返回:
"merge_commit_sha": ""
这是在我的案例类中声明该字段的方式:
merge_commit_sha: Option[ObjectId],
我有一个implicitFormat[ObjectId]
,它不能容忍空字符串,因为这不是Git 哈希ID 的有效值。我还使用了Read[PullRequest]
我想继续使用的 play-json macro-generated ,而不是单独声明拉取请求中每个字段的读取。
由于我已将该字段声明为选项,因此我希望"merge_commit_sha": ""
将其读取为 value None
,但这不是当前发生的情况 - 存在一个字符串,因此Format[ObjectId]
调用了 并返回一个JsFailure
.
我尝试过的一件事是声明具有所需行为的隐式Format[Option[ObjectId]]
,但它似乎没有被宏生成的Read[PullRequest]
.