我正在开发一个小应用程序来跟踪整个城市的自行车车站,并且我有一个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感兴趣:节点的
banking
,bonus
,available_bike_stands
,available_bikes
和status
标记。状态标签是可选的,它应该简单地告诉我自行车站是打开的(可用的)还是关闭的。非常感谢你,
问候。
最佳答案
从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
}