2011-10-16 55 views
2

擁有一個對象數組我想將它們序列化爲JSON(一個JValue實例)。 我試着結合JSON實體如下因素2個變種:如何將對象數組序列化爲JSON JValue?


def items : Array[FooBar] = Array (new FooBar(1), new FooBar(2), new FooBar(3)) 
def toJson : JValue = { 
    val jItems : Array[JValue]= items.map(i => i.toJson) 

    // variant 1. 
    // val jItemsC = jItems.reduceLeft[JValue](_~_) 

    // variant 2. 
    val jItemsC = jItems.reduceLeft((a : JObject, b : JValue) => a ~ b) 

    "items" -> jItemsC 
} 

第一(和第二位(一個:JValue,B:JValue))說 value ~ is not a member of net.liftweb.json.package.JValue

第二個說 overloaded method value ~ with alternatives: (right: net.liftweb.json.package.JObject)net.liftweb.json.JsonAST.JObject <and>
(right: (String, net.liftweb.json.package.JValue))net.liftweb.json.JsonAST.JObject
cannot be applied to (net.liftweb.json.package.JValue)

那麼如何解決問題以及如何解決問題?

回答

0

這應該工作:

val a = Array("a", "b", "c") 
Extraction.decompose(a) 

JArray(a.toList map JString.apply) 
+0

'Extraction.decompose(一)'(其中一個是一類礦井的實例的Array)導致'找不到隱參數格式的值:net.liftweb.json.Formats'編譯錯誤。 – Ivan

+0

'JArray(a.toList map JString.apply)'導致'類型不匹配; found:String => net.liftweb.json.JSONAST.JString; required:code.model.Item =>?'編譯錯誤。 – Ivan

+0

當a是一個JValue對象數組時,'JArray(a.toList)'似乎工作(至少編譯)。 – Ivan