2017-05-18 3 views
2

Im Kotlin repl:Kotlin Get Value von JSON

>>> import java.io.StringReader 
>>> val json = p.parse(StringReader("""{"abc":"123"}""")) as JsonObject 
>>> json.string("abc") 
error: unresolved reference: string 
json.string("abc") 
    ^

>>> json 
JsonObject(map={abc=123}) 

Get Fehler nicht aufgelösten Verweis. Keines der Beispiele hier: https://github.com/cbeust/klaxon Arbeit

Antwort

3

Sie müssen die string function auch importieren, da es sich um eine extension function ist, und es is not imported zusammen mit seinem Empfänger Typ Parser standardmäßig:

import com.beust.klaxon.string 
json.string("abc") 
+0

Was best practice wäre ? Importieren Sie einfach alle, die Sie verwenden möchten? –

+0

Wenn Sie viele Funktionen aus demselben Paket benötigen, können Sie stattdessen das ganze Paket importieren: 'import com.example. *'. Aber das kann zur Auflösung und Vervollständigung von Namespaces führen, daher empfehle ich das nicht auf großen Paketen, von denen man nur ein paar Funktionen benötigt. Abgesehen davon liegt es an dir. AFAIR, IntelliJ Standardverhalten in regulären Quellen (Nicht-Skript) ist es, separate Importe durch ein Paket zu ersetzen, wenn ihre Anzahl einen Wert wie 4 erreicht. – hotkey