0
場景: 我有以下的情況下類:我無法找到以下代碼中的錯誤?
case class Student(firstName:String, lastName: String)
我需要編寫讀取和寫入學生。我提供的json是學生序列。 例如:
{
"College": "Abc",
"student" : [{"firstName" : "Jack", "lastName":"Starc"},
{"firstName" : "Nicolas", "lastName":"Pooran"}
]
}
我寫我的讀取和寫入操作爲:
implicit val studentFormat = Json.format[Student]
implicit val studentRead = Json.reads[Student]
implicit val studentWrite = Json.writes[Student]
implicit val studentReadSeq = Reads.seq(studentRead)
implicit val studentWriteSeq = Writes.seq(studentWrite)
現在我必須做出一個類型解析器和檢查學生是否是數組或簡單的對象。這裏的關鍵即學生可以是學生或學生信息。所以我必須根據json中提供的價值來創建解析器。
爲此,我做了如下:
def studentCheck(jsonValue: JsObject) = {
var modifiedJson = Json.obj()
for ((key, value) <- jsonValue.value) {
if(value.validate[Student].isSuccess) {
val json =
studentFormat.writes(value.validate[Student].get).as[JsObject]
modifiedJson.+(key, json)
}
else if(studentReadSeq.reads(value).isSuccess) {
//My Code will be here
modifiedJson
}
else {
println("Error")
modifiedJson.+(key,value)
}
}
}
val studentJson = Json.obj(
"college" -> "ABC",
"student" -> Json.arr(
Json.obj("firstName" -> "Jack", "lastName" -> "Starc"),
Json.obj("firstName" -> "Nicolas", "entity" -> "Pooran")
)
)
studentCheck(studentJson)
我的就是這裏的問題,if語句執行的,而不是ELSEIF甚至還提供學生名單第一種情況,即。我如何驗證它是否滿足所有條件,即,如果執行語句並且如果提供學生列表elseif語句,則提供Student對象。