2011-10-16 2 views
2

개체의 배열이 JSON (JValue 인스턴스)로 직렬화하고 싶습니다.개체 배열을 JSON JValue로 serialize하는 방법은 무엇입니까?


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 
} 

첫 번째 (와 함께 두 번째는 (A : JValue가, B : 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)
을 말한다 value ~ is not a member of net.liftweb.json.package.JValue

말한다 내가 JSON 개체를 결합하는 folowing 2 개 변종을 시도했습니다

그래서 문제가 무엇이며 내 문제가 어떻게 해결 될 수 있습니까?

답변

0

이 작동합니다 :

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

또는

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

'Extraction.decompose (A)'원인'암시 찾을 수 없습니다 (a는 내 클래스의 인스턴스의 배열입니다) 매개 변수 형식 값 : 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

관련 문제