Как сериализовать массив объектов в JSON JValue? - PullRequest
2 голосов
/ 16 октября 2011

Имея массив объектов, я хотел бы сериализовать их в JSON (экземпляр JValue).Я попробовал следующие 2 варианта объединения сущностей JSON:


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)) говорит 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><br> (right: (String, net.liftweb.json.package.JValue))net.liftweb.json.JsonAST.JObject<br> cannot be applied to (net.liftweb.json.package.JValue)

Так в чем же проблема и как можно решить мою проблему?

1 Ответ

0 голосов
/ 16 октября 2011

Это должно работать:

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

или

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