Map [String, Any] sprey-json ile nasıl serileştiririm? Ben Cannot find JsonWriter or JsonFormat type class for scala.collection.immutable.Map[String,Any]
Cannot find JsonWriter or JsonFormat type class for scala.collection.immutable.Map[String,Any]
diyor.Harita [String, Any] sprey json ile
cevap
İşte bu görevi yapmak için kullanılan örtük bir dönüştürücü var:
implicit object AnyJsonFormat extends JsonFormat[Any] {
def write(x: Any) = x match {
case n: Int => JsNumber(n)
case s: String => JsString(s)
case b: Boolean if b == true => JsTrue
case b: Boolean if b == false => JsFalse
}
def read(value: JsValue) = value match {
case JsNumber(n) => n.intValue()
case JsString(s) => s
case JsTrue => true
case JsFalse => false
}
}
O Sprey kullanıcı grubunda this post uyarlanmıştır, ama ben alamadım ve iç içe Sıraları ve Maps yazmaya gerek yoktu Json'a, onları çıkardım. senin durumda çalışmalıdır
Diğer bir seçenek, bu benim için çalışıyor,
data.parseJson.convertTo[Map[String, JsValue]]
Bunu bahsettim, çünkü birçok durumda değerlerin JsValue değerini kullanabiliyordum. insanlar için yeterli olun. Ayrıca, Any'ın idaresinden daha fazla spray.json zihniyetine, imho'ya daha fazla uyuyor. – akauppi
'data',' Map [String, Any] 'türündendir - parseJson' yöntemine sahip olmak için ne almalıyım? – mirelon
Müthiş olduğunu. Sadece bu nesneyi ona bildiren diğer JsonFormat örtüşmelerinden ÖNCE bildirdiğimden emin olmalıyım – Bogdan
Kodunuzda bir '}' eksik. – dividebyzero
Gerçekten. Güncellenmiş. – Gangstead