【问题标题】:Swift 5: getting several values out of JSON with array root objectSwift 5:使用数组根对象从 JSON 中获取多个值
【发布时间】:2021-04-01 11:53:00
【问题描述】:

我(一个完整的菜鸟)目前正在尝试创建我的第一个 iOS 应用程序 - 用于我的国家货币乌克兰格里夫纳的货币表/转换器。我创建了一个 TableView,我将使用以下链接中的 JSON 文件中的数据填充它: Tap here

文件本身具有数组根。像这样:

 [
{ 
"r030":36,"txt":"Австралійський долар","rate":21.334,"cc":"AUD","exchangedate":"23.12.2020"
 }
,{ 
"r030":124,"txt":"Канадський долар","rate":21.9334,"cc":"CAD","exchangedate":"23.12.2020"
 }
,{ 
"r030":156,"txt":"Юань Женьміньбі","rate":4.3192,"cc":"CNY","exchangedate":"23.12.2020"
 }
,{ 
"r030":191,"txt":"Куна","rate":4.5833,"cc":"HRK","exchangedate":"23.12.2020"
 }]

我想从这个文件中创建一个字典,只使用两个值:[cc: rate],然后用这个数据填充我的 TableView。我不在乎其他价值观。

类似的东西:

["AUD": 21.334, "CAD": 21.9334]

我应该使用其他数据类型来存储这些数据吗?一个 Struct 代表一种货币,然后制作一个货币结构数组,也许?

我如何从该 URL 获取此文件并制作这样的 Dictionary/Struct 数组/...?

提前非常感谢你:)

【问题讨论】:

    标签: ios arrays json swift parsing


    【解决方案1】:

    创建一个结构

    struct Currency : Decodable {
        let name : String
        let rate : Double
    
        private enum CodingKeys : String, CodingKey { case name = "cc", rate }
    }
    

    然后使用URLSession 加载数据并使用JSONDecoder 将JSON 数组解码为[Currency](两者都有无数个示例)。

    【讨论】:

    • 谢谢您,先生!完全有道理。但是您能否详细说明该私有枚举行的目的。我们需要它做什么?
    • 它用于翻译ccname 并省略除 rate 之外的所有其他键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多