Fre*_*eek 5 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()
Run Code Online (Sandbox Code Playgroud)
我花了很长时间才发现我需要添加 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 ...
Run Code Online (Sandbox Code Playgroud)
现在,在 Python 中,我只需将 .json() 添加到“结果”参数中,然后我就可以将 json 字段作为具有多个级别的字典进行寻址,例如
result["success"]
Run Code Online (Sandbox Code Playgroud)
会给我:
true
Run Code Online (Sandbox Code Playgroud)
Kotlin 有类似的东西吗?我尝试过 Klaxon https://github.com/cbeust/klaxon,我又花了很多时间才意识到我必须这样做import com.beust.klaxon.string,例如网站上没有提到,所以一个附带问题是:如何做当您找到代码示例时,您知道需要导入什么吗?似乎每个人都知道...但我离题了。
我的主要问题是:如何处理 Json 的单独字段并将它们放入单独的变量中?
致以最崇高的敬意。
有很多 JSON 解析器。您的示例是一个 Kotlin 显式示例,这对于 Kotlin 来说不是强制性的,因为还有许多基本的 Java 解析器,您可以在 Kotlin 中同样使用它们。
为您进口。显然,您需要导入要使用的类,IntelliJ等 IDE会自动为您处理导入。这意味着您不必键入任何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")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8408 次 |
| 最近记录: |