2010-09-09 14 views
2

Dans Scala 2.8 et liftweb.net 2.0, j'essaie de sérialiser une classe case vers Json, mais lorsque la classe case a une énumération dans ça échoue.Problème lors de la conversion d'une classe scala en json JObject lorsqu'elle contient un champ de type Enumération

 
import net.liftweb.json.DefaultFormats 
import net.liftweb.json.Extraction._ 
import net.liftweb.json.JsonDSL._ 
import net.liftweb.json.JsonAST.JObject 


// Enumerated type 
object ColorType extends scala.Enumeration { 
type ColorType = Value 
val Red, Blue, Grean = Value 
} 

Ensuite, la classe de cas -

 
case class colorInfo (name : String, color : ColorType) 

code

qui tente de se convertir à jobject

 
val tColor = colorInfo("sienna",ColorType.Blue) 
implicit val formats = DefaultFormats 
val x = decompose(tColor).asInstanceOf[JObject] 

Je reçois cette erreur:

 
java.lang.NoSuchFieldException: $outer 
at java.lang.Class.getDeclaredField(Class.java:1882) 
at net.liftweb.json.Extraction$$anonfun$decompose$6.apply(Extraction.scala:82) 
at net.liftweb.json.Extraction$$anonfun$decompose$6.apply(Extraction.scala:81) 
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206) 
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206) 
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61) 
at scala.collection.immutable.List.foreach(List.scala:45) 
at scala.collection.TraversableLike$class.map(TraversableLike.scala:206) 
at scala.collection.immutable.List.map(List.scala:45) 
at net.liftweb.json.Extraction$.decompose(Extraction.scala:81) 
at net.liftweb.json.Extraction$$anonfu... 

Répondre