2017-06-05 78 views
0

我有一个情况我有一个输入数据模型作为忽略JSON现场播放控制器斯卡拉

case class Person(name: String, 
        age: Int, 
        contact: Int) 

但是,我想忽略财产,因为我不会接受,但我需要它把它留在我后面注入的DB中。

一个选项可能是使其成为可选项,但在这种情况下,我需要为DB创建另一个模型,这是多余的。

任何人都可以提供JSONCombinator READ解决方案以避免根本读取字段吗?

感谢

+0

要么使这一个选项(不建议报告),无论是创建自定义阅读器与忽略字段默认它为空字符串(不推荐),或者创建另一个案例类'PersonCreation' w这只包含2个领域(最好的办法) –

+0

干杯@路易F. ..谢谢你的回复...是的,看起来2班会很容易和好,但你有任何例子“我可以忽略该字段,并默认它清空字符串“。再次,非常感谢! – boseAbhishek

回答

1

创建自定义Reads和默认名称为空字符串:

import play.api.libs.json._ // JSON library 
    import play.api.libs.json.Reads._ // Custom validation helpers 
    import play.api.libs.functional.syntax._ // Combinator syntax 

    implicit val customReads: Reads[Person] = (
    (JsPath \ "age").read[Int] and 
     (JsPath \ "contact").read[Int] 
)((age, contact) => Person(name = "", age = age, contact = contact)) 

编辑

implicit val customWrites: Writes[Person] = (
    (JsPath \ "age").write[Int] and 
     (JsPath \ "contact").write[Int] 
)((person) => (p.age, p.contact)) 
+0

再次感谢@Louis F. ...我会怎么写这个customWrite忽略这个名字..我知道这听起来很愚蠢,但我对这一切都非常陌生,并且无法想象它.. – boseAbhishek

+0

看到我的更新时间戳 –

+0

再次感谢您的快速回复......您真棒! – boseAbhishek