让我以一个例子来解释这个问题。如果我有一个JSON,如下所示:
{“person1”:{“名称”:“名称一”,“地址”:{“街道”:“某些街道”,“城市”:“某些城市”},
“person2”:{“名称”:“名称二”,“地址”:{“街道”:“其他街道”,“城市”:“其他城市”}}
没有限制的人数,输入的JSON可以有更多的人
我可以通过以下方式提取这个JSON对象
var persons =解析(Res).extractT
以下是相关的案例类:
案例类地址(街道: String,城市: String)
案例类人员(名称: String,地址: Address,子类: ListChild)
案例类人员(person1: Person,person2: Person)
问题:上面的场景工作得非常好。然而,需要的是键在键/值对中是动态的。因此,在提供的示例JSON中,person1和person2可以是任何东西,我需要动态地读取它们。Person类的最佳结构是什么来解释这种动态性质。
发布于 2010-05-22 17:02:51
解析的一种方法是对根JSON对象的子元素进行映射:
scala> parse(res).children.map(_.extract[Person])
res3: List[Person] = List(Person(Name One,Address(Some Street,Some City)), Person(Name Two,Address(Some Other Street,Some Other City)))如果您需要保留字段名,可以这样做:
scala> Map() ++ parse(res).children.map { case f: JField => (f.name, f.extract[Person]) }
res4: scala.collection.immutable.Map[String,Person] = Map(person1 -> Person(Name One,Address(Some Street,Some City)), person2 -> Person(Name Two,Address(Some Other Street,Some Other City)))注意,当我们开始使用2.8特性时,以下直接方法应该有效:
parse(res).extract[Map[String, Person]]https://stackoverflow.com/questions/2888599
复制相似问题