Scénario: je suit la classe de cas:Je ne pouvais pas trouver ce qui est erreur dans le code suivant?
case class Student(firstName:String, lastName: String)
Je dois écrire lecture et d'écriture pour les étudiants. Le json que je fournis est une séquence d'étudiant. Par exemple:
{
"College": "Abc",
"student" : [{"firstName" : "Jack", "lastName":"Starc"},
{"firstName" : "Nicolas", "lastName":"Pooran"}
]
}
j'ai écrit mon lit et écrit que:
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)
Maintenant, je dois faire un analyseur de type et vérifier si l'étudiant est un tableau ou un objet simple. Ici, la clé, c'est-à-dire l'étudiant, peut être Etudiants ou StudentInfo. Je dois donc faire un analyseur sur la base de la valeur fournie en json.
Pour cela je l'ai fait comme suit:
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)
Le problème que je reçois ici est, même fourni la liste des étudiants le premier cas, à savoir si l'instruction est exécutée au lieu de elseif. Comment puis-je valider pour satisfaire toutes les conditions, c'est-à-dire si l'objet Student est fourni si la déclaration est exécutée et si la liste de l'étudiant est fournie sinon l'instruction est exécutée.