import scala.util.parsing.json._
val jsonObj = JSON.parseFull("{\"type\":\"record\",\"name\":\"ProductWithLatestPrice\",\"namespace\":\"models\",\"fields\":[{\"name\":\"isbn\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"default\":null},{\"name\":\"ku\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"default\":null},{\"name\":\"pc\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},\"default\":[]},{\"name\":\"mpn\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},\"default\":[]},{\"name\":\"smallDescription\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"default\":null},{\"name\":\"longDescription\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"default\":null},{\"name\":\"specificationText\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"default\":null}]}")
我想删除密钥" smallDescription"并且它的值来自这个json而不使用正则表达式。对此有何帮助?
答案 0 :(得分:0)
这应该有效(更新以匹配嵌套数组/对象结构):
def remove(key: String)(x: Any): Any =
x match {
case m: Map[String, _] => m.mapValues(remove(key)) - key
case l: List[_] => l.map(remove(key))
case v => v
}
val jsonObj = JSON.parseFull("…").map(remove("smallDescription"))
我建议使用JSON库,例如http://json4s.org/或http://argonaut.io/。