簡體   English   中英

播放JSON讀取Combinator語法:訪問原始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]手動完成,但是因此需要“原始” JsValue ,而使用組合語法時則不是這種情況。 還是我錯了? 有沒有更簡單的方法?

編輯: TL; DR:我想將實體的名稱 -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))
    )
)(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM