json4s

2014-11-21 11 views
9

kullanarak json dizisinden bilgi ayrıştırmak ve ayıklamak nasıl Şu anda json4s (scala) kullanarak bir json dizisinden bilgileri ayıklamak için çalışıyorum.json4s

val json = """ 
    [ 
    {"name": "Foo", "emails": ["[email protected]", "[email protected]"]}, 
    {"name": "Bar", "emails": ["[email protected]", "[email protected]"]} 
    ] 
""" 

Ve kod aşağıdaki gibidir:

case class User(name: String, emails: List[String]) 
case class UserList(users: List[User]) { 
    override def toString(): String = { 
    this.users.foldLeft("")((a, b) => a + b.toString) 
    } 
} 

val obj = parse(json).extract[UserList] 
printf("type: %s\n", obj.getClass) 
printf("users: %s\n", obj.users.toString) 

çıktı olarak çıkıyor şu şekildedir:

bir örnek verilerdir

type: class UserList 
users: List() 

O görünüyor veri doğru şekilde alınmadı. Kodumda herhangi bir sorun var mı?

GÜNCELLEME: @Kulu Limpa'nın önerisine göre çalışır.

cevap

18

JSON'nuzun bir dizidir, bu nedenle List[User] olduğu için kodunuz doğrudur.

Çözüm 1: biraz farklı sonuçla, bu sorunu gidermek için iki yol vardır

{"users": 
    [ 
    {"name": "Foo", "emails": ["[email protected]", "[email protected]"]}, 
    {"name": "Bar", "emails": ["[email protected]", "[email protected]"]} 
    ] 
} 

Solution2 için json Fix:

val obj = parse(json).extract[List[User]] 
için özütünün türü parametresi değiştirme
+2

Siz bir beyefendisiniz. Teşekkürler! –