Gov*_*ngh 5 collections json scala playframework playframework-json
我必须将play.api.libs.json.JsValue
密钥存储到列表。我该怎么做?
var str = ??? //json String
val json: JsValue = Json.parse(str)
val data=json.\("data")
println(data) //[{"3":"4"},{"5":"2"},{"4":"5"},{"2":"3"}]
val newIndexes=List[Long]()
Run Code Online (Sandbox Code Playgroud)
期待
newIndexes=List(3,5,4,2)
Run Code Online (Sandbox Code Playgroud)
如果您想获取json中的所有键,则可以使用
def allKeys(json: JsValue): collection.Set[String] = json match {
case o: JsObject => o.keys ++ o.values.flatMap(allKeys)
case JsArray(as) => as.flatMap(allKeys).toSet
case _ => Set()
}
Run Code Online (Sandbox Code Playgroud)
请注意,为了不保留作为values
中JsObject
是一个Map
。
另一种选择是使用中Seq
的字段,JsObject
而不是使用keys
:
def allKeys(json: JsValue): Seq[String] = json match {
case JsObject(fields) => fields.map(_._1) ++ fields.map(_._2).flatMap(allKeys)
case JsArray(as) => as.flatMap(allKeys)
case _ => Seq.empty[String]
}
Run Code Online (Sandbox Code Playgroud)
这样,您将获得json对象中所有键的广度优先顺序。
归档时间: |
|
查看次数: |
5573 次 |
最近记录: |