json - 如何在 android studio 上使用 klaxon 从 thingspeak 解析 json 以获取字段值?
问题描述
我正在使用 thingspeak 并且我已经成功地让 thingspeak 使用 okhttp 获取 json 数据,但我不知道如何使用 klaxon 正确解析它。
这是代码
private fun funButton1() {
println("Attempting to get JSON data!")
val url = "https://api.thingspeak.com/channels/1029606/feeds.json?results=1"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
val body = response.body?.string()
println(body)
class feeds (val field1: String)
val result = Klaxon()
.parse<feeds>(body.toString())
textView.text = result
}
override fun onFailure(call: Call, e: IOException) {
println("Failed to execute request!")
}
})
这是来自 thingspeak 的 json 数据
{
"channel": {
"id": 1029606,
"name": "LED ",
"description": "Acts as a medium for the phone and arduino \r\nRules : 1 = LED ON 0 = LED OFF ",
"latitude": "0.0",
"longitude": "0.0",
"field1": "LED STATUS",
"created_at": "2020-04-01T17:19:03Z",
"updated_at": "2020-04-01T17:20:39Z",
"last_entry_id": 25
},
"feeds": [
{
"created_at": "2020-05-11T02:58:07Z",
"entry_id": 25,
"field1": "1"
}
]
}
我试图获取值为 1 的 field1 的值,但我不知道该怎么做,因为我很愚蠢。但我希望有人能告诉我如何正确使用 klaxon 来获取 json 数据。
解决方案
对于 Klaxon,您需要创建一个表示 JSON 结构的类。fe 如果你得到一个 JSON:
{
"username": "admin",
"password": "admin"
}
你想做一个看起来像这样的课程:
class myClass(val username:String, val password:String)
然后,您可以像正在做的那样解析它。对于您的 JSON,您需要一个更大的类。为简单起见,我将只为提要创建一个类,为频道创建一个类:
class Feed(val created_at:String, val entry_id: Int, val field1:String)
class Channel(val id: Int, val name: String, val description: String, val latitude: String, val longitude:String, val field1: String, val created_at: String, val updated_at: String, val last_entry_id: Int)
然后你可以使用这个类来解析你的 JSON:
class Thingspeak(val channel: Channel, val feeds: ArrayList<Feed>)
请让我知道它是否对您有用!
推荐阅读
- asp.net-mvc - ASP.NET MVC 数据标签无法使用 Syncfusion 图表
- c - 我无法在我的 C 程序中清除此内存泄漏
- c# - 如何制作 Blazor 页面互斥锁
- javascript - JavaScript ES6+ 比较对象数组中的字段
- c# - Blazor 事件仅在调试时正常工作
- server - Jupyter 似乎连接正常,但无法在浏览器中访问
- c# - 棋盘游戏的 int 数组
- pine-script - 在 pinescript 警报中,有什么方法可以检测图表的时间范围,然后根据它发送警报?
- python - 在 Docker 上使用 parsedmarc 分析和可视化 DMARC 结果
- jwt - JWT 第三方应用程序声明未出现在 Cognito accessToken 中