Android动态解析 JSON 密钥

2022-10-17  本文已影响0人  安安_660c

JSON 代表 JavaScript 对象表示法。它是一种独立的数据交换格式,是 XML 的最佳替代方法。作为复习,JSON 文件有四个主要组件:JSON 数组、JSON 对象、键和值。通常,我们需要获取指定键的值。但密钥有时至关重要,您需要像某些货币兑换API一样获取它。在本文中,我们将通过处理两个示例来了解如何动态解析密钥。

首先,解析具有以下值的 JSON 键:

在第一个示例中,我们需要获取作为密钥的货币代码。



在上图中,货币代码位于红色框中,其旁边的双精度值是其汇率。因此,要为其创建模型类,您需要将字符串映射定义为键,并双精度值表示货币代码及其汇率。

@SerializedName("rates") 
val rates: Map<String, Double>,

货币代码 = > 键(字符串)
货币汇率 = >值(双倍)

要在适配器中访问它们,必须定义对变量

val currentRate: Pair<String, Double> = getItem(position)
val currencyCode = currentRate.first    // code
val currencyRate = currentRate.second   // rate

此映射的每个项目都是一对字符串键和双精度值。因此,您可以将所有项目作为列表或集获取,并将它们发送到适配器并显示它们。

其次,解析 JSON 嵌套键及其值

如果您的值是另一个对象,并且您希望其中的键和值,则应创建字符串映射作为键,另一个映射作为值。这意味着您需要获取嵌套键,并且应该创建一个字符串映射作为键,另一个映射作为值。



在上图中,您的键是红色框中的日期,您的值是货币代码和货币汇率,将由另一个地图表示。

因此,要为其创建模型类,我们将字符串的 Map 定义为键,将另一个映射定义为值。

@SerializedName("rates") 
val rates: Map<String, Map<String, Double>>,

键(字符串)= > 日期
值(另一个地图)
货币代码 = >键(字符串)
货币汇率 = >值(双倍)

要在活动中访问它们,您需要观察数据并获取它。

val response = data.rates
val dates = response.keys
val codes = response.values.keys 
val rates= response.values.values

这是该概念的两个示例,可帮助您在高级和复杂的 API 中解析 JSON。

上一篇 下一篇

猜你喜欢

热点阅读