json - 在 Kotlin 中解析 json

标签 json kotlin jupyter-notebook klaxon

我正在尝试在 Kotlin 中解析 Json。我遇到了很多麻烦,似乎很多人都是在Java之后学习Kotlin的......不是我,我是一个Python人。我得到了一个运行得相当快的 Kotlin Jupyter Notebook ( https://github.com/ligee/kotlin-jupyter ),之后我设法从 bittrex api 中提取信息,如下所示:

import java.net.URL
val result = URL("https://bittrex.com/api/v1.1/public/getmarkets").readText()

找了好久才发现需要添加import java.net.URL,这在所有的代码示例中似乎总是隐含的。无论如何,这给了我一个 json 响应(“结果参数”):
{"success":true,"message":"","result":[{"MarketCurrency":"LTC","BaseCurrency":"BTC","MarketCurrencyLong":"Litecoin","BaseCurrencyLong":"Bitcoin","MinTradeSize":0.01469482,"MarketName":"BTC-LTC","IsActive":true,"Created":"2014-02-13T00:00:00","Notice":null,"IsSponsored":null,"LogoUrl":"https://bittrexblobstorage.blob.core.windows.net/public/6defbc41-582d-47a6-bb2e-d0fa88663524.png"},{"MarketCurrency":"DOGE","BaseCurrency":"BTC","MarketCurrencyLong":"Dogecoin","BaseCurrencyLong":"Bitcoin","MinTradeSize":274.72527473,"MarketName":"BTC-DOGE","IsActive":true,"Created":"2014-02-13T00:00:00","Notice":null,"IsSponsored":null,"LogoUrl":"https://bittrexblobstorage.blob.core.windows.net/public/a2b8eaee-2905-4478-a7a0-246f212c64c6.png"},{"MarketCurrency ...

现在,在 Python 中,我只需将 .json() 添加到“result”参数中,然后我就可以将 json 字段作为具有多个级别的字典进行寻址,例如
result["success"]

会给我:
true

Kotlin 有类似的东西吗?我试过 Klaxon https://github.com/cbeust/klaxon ,我又花了很多时间才意识到我必须做import com.beust.klaxon.string ,例如网站上没有提到,所以一个附带问题是:您在查找代码示例时如何知道需要导入什么?似乎每个人都知道……但我离题了。

我的主要问题是:如何处理 Json 的单独字段并将它们放入单独的变量中?

致以最崇高的敬意。

最佳答案

有很多 JSON 解析器。您的示例是 Kotlin 显式示例,这对 Kotlin 不是强制性的,因为还有许多基本的 Java 解析器,您可以在 Kotlin 中使用它们。

为您的进口。显然你需要导入你想使用的类和 IDE 之类的 IntelliJ自动为您处理导入。这意味着您不必输入任何 import语句,但在引用这些类时会自动添加它们。

我认为现在有些图书馆只是希望您不自己处理导入,因此不会帮助您找到正确的导入。

我对解析器的建议是 Fuel .
该库也针对 Kotlin 进行了优化。在 Fuel 的帮助下,使用这个简单的代码片段可以解决您的问题:

"https://bittrex.com/api/v1.1/public/getmarkets".httpGet().responseJson { _, response, result ->
    if (response.responseMessage == "OK" && response.statusCode == 200) {
        val yourResult = result.get().obj().getBoolean("success")
    }
}

关于json - 在 Kotlin 中解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390172/

相关文章:

python - 如何获取与当前运行的 ipython 内核关联的 ipython 笔记本标题

python - Jupyter Notebook(仅限)内存错误,相同的代码在传统的 .py 中运行并且可以工作

java - 如何从 BindingResult 获取 Controller 中的错误文本

python - 将列表表示为带有双引号的字符串,而不是 JSON 的单引号

java - 阻止 Android Spinner 删除列表

python - VSCode Intellisense 在编辑 python 文件时有效,但在 Jupyter Notebook 中无效

json - Flash AS3-具有自定义 header : POST but appears as GET (IOError #2032) [duplicate]的API请求

javascript - 如何在 URL 中请求不带 'callback' 的 jsonp

android - 如何创建没有主键的实体的新实例?

android - 检查类型时,EditText 是一个 TextView