简体   繁体   English

在包含scala case类包含枚举类型的字段时遇到麻烦,将scala case类转换为json JObject

[英]Having trouble converted a scala case class to json JObject when it contains an field of type Enumeration

In Scala 2.8 and liftweb.net 2.0 I'm trying to serialize a case-class to Json but when the case class has an enumeration in it it fails. 在Scala 2.8和liftweb.net 2.0中,我试图将一个案例类序列化为Json,但是当该案例类中包含枚举时,它将失败。

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
}

Then the case class - 然后案例类-

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

Code that tries to convert to JObject 尝试转换为JObject的代码

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

I get this error: 我收到此错误:

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...

There's no out-of-the-box support for scala.Enumeration yet. 还没有对scala.Enumeration的现成支持。 Please see this mailing list thread which outlines an extension adding Enumeration support for JSON: 请参阅此邮件列表线程,其中概述了一个扩展,该扩展添加了对JSON的枚举支持:

http://groups.google.fi/group/liftweb/browse_thread/thread/d38090d804d902a3/7d7b55c4a63b2580?lnk=gst&q=json#7d7b55c4a63b2580 http://groups.google.fi/group/liftweb/browse_thread/thread/d38090d804d902a3/7d7b55c4a63b2580?lnk=gst&q=json#7d7b55c4a63b2580

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM