播放 JSON 读取组合器语法:访问原始 JsValue?

Play JSON Reads Combinator Syntax: access raw JsValue?

我正在使用 Play 的 Reads 组合符语法来读取相当大的 JSON 结构。这很好用,除了一个字段:

implicit val reads: Reads[SomeEntity] = (
    (__ \ "name").read[String] and
    // a lot more to read, omitted...
    ...  and
    (__ \ "settings").read[Seq[Setting]](settingsReads(<name here>))
)(...)

正如你在上面看到的,自定义Reads[Setting](此处:settingsReads)需要json结构的name字段——读取的同名在第 2 行。但是我怎样才能访问它呢?它可以使用 (JsValue \ "name").as[String] 手动完成,但因此需要 "raw" JsValue,而使用组合器语法时则不是这种情况。还是我错了?有没有更简单的方法?

编辑: 长话短说:我想将实体的 name-String 传递给 settingsReads 方法。

您的阅读[SomeEntity]:

implicit val reads: Reads[SomeEntity] = (
    (__ \ "name").read[String] and
    // a lot more to read, omitted...
    ...  and
    (__ \ "name").read[String].flatMap(name => 
     (__ \ "settings").read[Seq[Setting]](settingsReads(name))
    )
)(...)