【问题标题】:Parse JSON with wrong designed structure in Swift在 Swift 中用错误的设计结构解析 JSON
【发布时间】:2019-06-21 11:50:57
【问题描述】:

我必须解析一些设计得很糟糕的 JSON,老实说我从来没有遇到过这样的问题。以下是整个 JSON 文件的简化剪辑:

{
    "5ee70183-87fe-4799-802e-ef7f5e7323db": 
    {
        "title": "Bank 1",
        "logo": "655ee02d87cf4cdf912c3507233b0520.gif"
    },
    "332c7078-97ad-4bf7-b8ee-44d85a9c88d1": 
    {
        "title": "Bank 2",
        "logo": "655ee02d87cf4cdf912c3507233b0520.gif"
    },
    "8e9bd4c8-6f4a-4663-ae86-b8fbaf295030": 
    {
        "title": "Bank 3",
        "logo": "655ee02d87cf4cdf912c3507233b0520.gif"
    }
}

如您所见,“根”键是一些 UUID。那些具有值的键应该是一个列表,但不是使用正确的 [] 括号作为列表,而是使用了 {} 错误的括号。如果我使用可编码来解析它,我必须创建具有 UUID 名称的结构,但最糟糕的是,这个“列表”不是固定的,但理论上是无限的。所以我的工作是解析这个 JSON 并获取一组银行实体。由于我现在感到震惊和困惑,我只是认为我无法使用可编码,需要手动将其解析为字典并通过分配给正确的列表项从那里获取属性。如果您曾经遇到过这样的问题或知道更好的解析选项,它将极大地帮助我处理这个问题。

【问题讨论】:

    标签: arrays json swift dictionary parsing


    【解决方案1】:

    你需要

    let res = try! JSONDecoder().decode([String:Root].self,from:data)
    print(Array(res.values))
    

    struct Root: Codable {
       let title, logo: String
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2019-11-05
      • 2021-04-05
      • 1970-01-01
      相关资源
      最近更新 更多