如果我有一个JSON
{"name":"jack","email":"jackt@gmail.com"}
现在,在映射此 JSON 时,我只想在我的 case 类中映射名称,例如
case class Person(name:String)
我们如何才能做到这一点?
import spray.json._
case class Person(name: String)
object PersonFormat extends DefaultJsonProtocol {
implicit val personFormat = jsonFormat1(Person)
}
import PersonFormat._
val source = """{ "name":"jack", "email":"jackt@gmail.com" }"""
source.parseJson.convertTo[Person]
您需要使用隐式 val 定义 JsonProtocol 。
import play.api.libs.json.Json
case class Sample(name:String)
implicit val SampleJosn = Json.reads[Sample]
val result = Json.parse("""{"name":"jack","email":"jackt@gmail.com"}""").as[Sample]
val result2 = Json.parse("""{"name":"jack"}""").as[Sample]
您的姓名将被映射,忽略电子邮件。
看这里小提琴:https://scalafiddle.io/sf/9nppAtI/0