1
我使用Play的Reads
组合语法来读取相当巨大的JSON结构。这个效果很好,只有一个行业例外:播放JSON读取Combinator语法:访问原始JsValue?
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]
手动完成,但因此需要“原始”JsValue
,而使用combinator语法时则不是这种情况。或者我错了?有更简单的方法吗?
编辑: TL; DR:我想给实体的名 -STRING传递给settingsReads方法。
是的,你的权利。您可以在Reads中使用没有JsValue的'name'值。你可以用Json例子来优化你的问题,并描述你想如何使用'name'值。 –
很抱歉,如果不够清楚。我想要做的是将_name_-String传递给获取设置所需的读取。换句话说:第5行的方法调用需要第2行的字符串。'settingsReads'的定义是'def settingsReads(name:String):读取[Setting]'。 – fxlae