0
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}]}")
Ich möchte den Schlüssel "smallDescription" und seine Werte aus diesem Json ohne Verwendung von Regex entfernen. Irgendwelche Hilfe dazu? obwohlEntfernen Sie einen Schlüssel, Wert aus einem JSON-Objekt von Scala
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"))
Ich würde empfehlen, eine JSON-Bibliothek zu verwenden, wie http://json4s.org/ oder http://argonaut.io/:
Danke für das Hinweis auf den Tippfehler, änderte es jetzt. Ich werde darauf zurückkommen. – Akan
Eigentlich ist "smallDescription" keine Top-Level-Eigenschaft, sondern innerhalb der Eigenschaft "fields" als Wert, der die Liste der Map enthält. Also ich muss den ganzen '{" Namen "löschen:" smallDescription "," type ": [" null ", {" type ":" string "," avro.java.string ":" String "}]," default ": null}' map chunk. – Akan
Ich habe die Antwort entsprechend aktualisiert. – devkat