我有一个字符串列表作为json消息,我需要使用json4s从json写入对象。解析后我需要将对象和对象属性存储为Map中的键。 使用 var 方法,我能够做到这一点。但我不想使用var,并希望使用foldLeft来做同样的事情。
case class Definition
{
name:String,
status:String
}
{"name":"test",
"status":"Enabled"
}
使用json4s读取api我得到的对象如下。
Definition(test,Enabled)
我会点亮上面的对象。从这个列表中我需要创建一个地图,需要将object.name作为键和对象存储为值。
寻找优化方法。
答案 0 :(得分:2)
// define case class
case class Definition(name: String, status: String)
// read objects from json
// i use test data to simplify example
val list = List(
Definition("name1", "status1"),
Definition("name2", "status2"),
Definition("name3", "status3")
)
// transform list to map
list.map(d => d.name -> d).toMap
要从json转换,您可以使用:
val objectList = definitionList
.foldLeft(List.empty[Definition])((listObject,result) => listObject :+ read[Definition](result))
或:
definitionList.map(read[Definition])