我正在开发一个小应用程序来跟踪整个城市的自行车车站,并且我有一个API,可向我提供提供服务的公司的自行车车站中自行车的可用状态。

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

我从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多个节点,此结构都是相同的。

我的问题是,我将如何从JSON的其余部分中过滤出一个单独的条目。参数number是每个自行车站唯一的ID。

有图书馆可以帮我吗?我的想法(非常幼稚)是每次都将整个JSON保存在本地,然后遍历它寻找"number":X,然后解析出我需要的数据,尽管这显然效率很低,但我知道。

我只对显示给用户的每个JSON感兴趣:节点的bankingbonusavailable_bike_standsavailable_bikesstatus标记。状态标签是可选的,它应该简单地告诉我自行车站是打开的(可用的)还是关闭的。

非常感谢你,

问候。

最佳答案

从API获取数据->改造

保存本地数据->共享首选项,会议室

获取每个JSON的一部分->创建一个包含所需字段的对象。当您使用改造从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
}

10-06 14:00
查看更多