Kann ich die Scala lift-json-Bibliothek verwenden, um einen JSON in eine Map zu analysieren?

Gibt es eine Möglichkeit, die JObject-Klasse der lift-json-Bibliothek zu verwenden, um sich wie eine Map zu verhalten?

Beispielsweise

val json = """
{ "_id" : { "$oid" : "4ca63596ae65a71dd376938e"} , "foo" : "bar" , "size" : 5}
"""

val record = JsonParser.parse(json)
record: net.liftweb.json.JsonAST.JValue = JObject(List(JField(_id,JObject(List(JField($oid,JString(4ca63596ae65a71dd376938e))))), JField(foo,JString(bar)), JField(size,JInt(5))))

</code>

Ich hätte erwartet, dass record ("foo") "bar" zurückgibt

Ich habe eine Wertefunktion bemerkt und sie gibt eine Karte aus, aber das eigentliche Objekt ist ein JValue.this.Values?

scala> record.values res43: record.Values = Map((_id,Map($oid -> 4ca63596ae65a71dd376938e)), (foo,bar), (size,5))

scala> record.values("foo") :12: error: record.values of type record.Values does not take parameters record.values("foo")

Es gibt Beispiele, in denen die lift-json-Bibliothek eine case-Klasse extrahiert, aber in diesem Fall kenne ich das json-Schema nicht im Voraus.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage