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

标签 java android json

我正在构建一个小型应用程序来跟踪城市周围的自行车站,并且我有一个 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 多个节点,此结构都是相同的。

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

有图书馆可以帮我做这个吗?我的想法(非常天真)是每次将整个 JSON 保存在本地,然后遍历它查找 "number":X 然后解析出我需要的数据,尽管这显然效率很低,我承认这一点。

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

非常感谢,

问候。

最佳答案

从API获取数据-->改造

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

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

关于java - 在 Android 中从 URL 中提取 JSON 的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61589196/

相关文章:

java - 迭代声明的映射内容

Java序列化导致并发修改异常

java - 在 Java 中使用 Gson 将字符串对象转换为 JSON 字符串

Android RatingBar 本身画错了

android - GreenDAO QueryBuilder动态添加条件

android - 设备上没有空间时如何处理异常

python - 用于外部 API 调用的可浏览 Django REST API 包装器

Python 元组到 JSON 输出

javascript - json如何将行转换为列

java - Mockito Rest 终点测试 - 将列表与报价进行比较