Tôi có một mã mẫu như sau.Scala Play Json Reads
import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.data.validation.ValidationError
import play.api.libs.json.Reads._
case class Retailer(firstName:String,lastName:String,email:String,mobileNo:String,password:String)
case class Business(name:String,preferredUrl:String,businessPhone:String,retailer:Retailer)
object JsonTest {
val jsonValue = """
{
"business":
{
"name":"Some Business Name",
"preferredUrl":"someurl",
"businessPhone":"somenumber",
"retailer":
{
"firstName":"Some",
"lastName":"One",
"email":"[email protected]",
"mobileNo":"someothernumber",
"password":"$^^HFKH*"
}
}
}
"""
def printJson ={
implicit val rltRds = (
(__ \ "firstName").read[String] ~
(__ \ "lastName").read[String] ~
(__ \ "email").read[String] ~
(__ \ "mobileNo").read[String] ~
(__ \ "password").read[String]
)(Retailer)
implicit val bsnsRds = (
(__ \ "name").read[String] ~
(__ \ "preferredUrl").read[String] ~
(__ \ "businessPhone").read[String] ~
(__ \ "retailer").read[Retailer](rltRds)
)(Business)
val buisness = Json.parse(jsonValue).validate[Business](bsnsRds)
val bus = new Business("Some Business","somebusinessurl","somenumber", new Retailer("Some","One","[email protected]","someothernumber","$^^HFKH*"))
//val json = Json.toJson(bus)
println(buisness)
}
def main(args: Array[String]): Unit = {
printJson
}
}
Tôi nhận được lỗi xác thực Json khi tôi cố phân tích cú pháp thành đối tượng Scala (Business Class trong trường hợp này). Lỗi này là
Tuy nhiên nếu json của tôi là như
val jsonValue = """
{
"name":"Some Business Name",
"preferredUrl":"someurl",
"businessPhone":"somenumber",
"retailer":
{
"firstName":"Some",
"lastName":"One",
"email":"[email protected]",
"mobileNo":"someothernumber",
"password":"$^^HFKH*"
}
}
"""
Lưu ý rằng khung bên ngoài "{" và "kinh doanh:" chìa khóa được loại bỏ. Tôi nhận được JsSuccess. Làm thế nào để viết những lần đọc cho Json như trong trường hợp đầu tiên? Ngoài ra, làm thế nào tôi có thể làm điều đó một cách chung chung?
Vui lòng trợ giúp.
đó làm việc. Cảm ơn nico_ekito. – user809564
Ok, nhưng có cách nào dễ dàng để chuyển từ biểu mẫu đầu tiên sang biểu mẫu khác để sử dụng ngầm businessReads val = Json.reads [Business] không? – Simon
Rất tiếc, tôi đã tìm thấy giải pháp, bạn có thể làm jsonValue \ "business" – Simon