繁体   English   中英

从 Android 中的 URL 中提取 JSON 的特定部分?

[英]Extracting specific section of JSON from URL in Android?

我正在构建一个小型应用程序来跟踪城市周围的自行车站,并且我有一个 API,它为我提供了提供服务的公司在自行车站的自行车可用性的当前状态。

我的计划是创建一种交互式 map,其中包含每个自行车站的所有标记,当用户点击其中一个时,他们会获得该特定自行车站的信息。 我已经将所有位置编码为 map 上的标记。 我现在需要的是能够获取用户点击的特定自行车站的数据。

我从 API 获得的 JSON 的一部分示例如下:

"number": INT,
"contract_name": "STRING",
"name": "STRING",
"address": "STRING",
"position": {
  "lat": DOUBLE,
  "lng": DOUBLE
},
"banking": BOOLEAN,
"bonus": BOOLEAN,
"bike_stands": INT,
"available_bike_stands": INT,
"available_bikes": INT,
"status": "STRING",
"last_update": 1588583133000
},
....

这个结构对于我从 API 得到的 JSON 的所有 100 多个节点都是相同的。

我的问题是,我将如何 go 从 JSON 的 rest 中过滤掉一个单独的条目。 参数number是每个自行车站唯一的 ID。

有没有图书馆可以为我做到这一点? 我的想法(非常天真)是每次都在本地保存整个 JSON,然后 go 通过它寻找"number":X然后解析出我需要的数据,虽然这显然是非常低效的,但我认识到这一点。

我只对每个 JSON 的一部分感兴趣,要向用户显示:节点的bankingbonusavailable_bike_stands自行车支架、 available_bikes自行车和status标签。 状态标签是可选的,它应该简单地告诉我自行车站是打开(可用)还是关闭。

非常感谢,

问候。

从 API 获取数据 --> Retrofit

保存本地数据--> SharePreference, Room

获取每个 JSON 的一部分 --> 您创建一个包含您需要的一些字段的 object。 当您使用 retrofit 从 API 获取数据时,它将返回您想要的结果

class YourClass {
    @SerializedName("number")
    var number: Int? = null
    @SerializedName("banking")
    var banking: Boolean? = null
    @SerializedName("bonus")
    var bonus: Boolean? = null
    @SerializedName("available_bike_stands")
    var availableBikeStands: Int? = null
    //... fields you need
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM