在 kotlin REPL 和暂存文件中使用 json 类时出错

Posted

技术标签:

【中文标题】在 kotlin REPL 和暂存文件中使用 json 类时出错【英文标题】:Error with using json classes from within kotlin REPL and scratch files 【发布时间】:2020-05-15 22:11:47 【问题描述】:

我正在开发一个需要处理从 Web API 检索到的 json 数据的 android 项目。在项目中,我成功地使用了JSONObjectJSONArray(包org.json)类,没有任何问题。

每次我想尝试一些 json 处理时总是运行编译、运行和导航应用程序很烦人,所以我决定尝试一下暂存文件。

我的暂存文件如下所示:

import org.json.JSONObject

val jsonObject = JSONObject(
    """
    
      "data": [
        ...
      ]
    
    """
)

println(jsonObject["data"])

当我尝试运行该文件时,我收到一条错误消息,指出导入不成功:

error: unresolved reference: json (scratch.kts:1:12)
error: unresolved reference: JSONObject (scratch.kts:3:18)
scratch.kts:1:12: error: unresolved reference: json
import org.json.JSONObject
           ^
scratch.kts:3:18: error: unresolved reference: JSONObject
val jsonObject = JSONObject(
                 ^

Process finished with exit code 1

据我了解,这是因为 org.json 类现在是 Android 的一部分,并且 Android 框架不能从草稿文件中获得。但是我该如何解决呢?我不应该能够以某种方式将org.json 包从Android 框架中导入吗?

【问题讨论】:

你发现了吗?当我尝试在暂存文件中使用协程时,我遇到了同样的问题 【参考方案1】:

为了在您的临时文件中使用import android.*,您必须连接到您的 Android 模块的类路径(参见下面的示例屏幕截图)。无论如何,这带来了一个缺点,即您必须拥有一个可运行的项目。

【讨论】:

太好了,非常感谢!我从来没有注意到那个下拉菜单。

以上是关于在 kotlin REPL 和暂存文件中使用 json 类时出错的主要内容,如果未能解决你的问题,请参考以下文章

用于 localhost 和暂存 url 的 Cors 过滤器

关于 Kotlin REPL 的两条小贴士

kotlin中ByteArray与基本类型的转换工具(位运算)

gitlog和diff区别

Node.js权威指南 - Node.js中的交互式运行环境——REPL

Kotlin-数组