使用可解码的方式解析JSON?

时间:2018-04-17 09:24:16

标签: json swift parsing

我有JSON个文件:

{
"name": "Jens",
"time": "11.45",
"date": "2018:04:17",
"differentTimestamps":[""]
"aWholeLotOfnames":{
   "name1": "Karl"
   "name2": "pär"
 }

如何解析JSON以上?我查看过本教程https://www.youtube.com/watch?v=YY3bTxgxWss。一个文本教程,但我不知道如何制作一个可以采取

的变量
"nameOfVar"{}

如果不是字典。本教程正在使用var nameOfVar:[在这种情况下应该是什么]对于几乎看起来像它的那个。事情是,他们的开头是[{并以a}结尾],而我的只是以{?我不知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

为JSON创建相应的Swift数据类型非常容易。

  • 字典{}可以解码为类/结构,其中键成为属性/成员。
  • 数组[]可以解码为给定(可解码)类型的数组。
  • 双引号中的任何值均为String偶数"12""false"
  • 数字浮点值为Double,整数值为Inttrue / falseBool
  • nullnil
let jsonString = """
{
    "name": "Jens",
    "time": "11.45",
    "date": "2018:04:17",
    "differentTimestamps":[""],
    "aWholeLotOfnames":{
        "name1": "Karl",
        "name2": "pär"
    }
}
"""

struct Item: Decodable {
    let name, time, date: String
    let differentTimestamps: [String]
    let aWholeLotOfnames: AWholeLotOfnames
}

struct AWholeLotOfnames : Decodable {
    let name1, name2 : String
}
let data = Data(jsonString.utf8)

do {
    let result = try JSONDecoder().decode(Item.self, from: data)
    print(result)
} catch { print(error) }