当前位置: 首页 > 面试题库 >

Swift 4 JSON可编码ID作为键

施同
2023-03-14
问题内容

我想将Swift 4的可编码功能与json一起使用,但其中一些键没有设置名称。而是有一个数组,它们是像

{
 "status": "ok",
 "messages": {
   "generalMessages": [],
   "recordMessages": []
 },
 "foundRows": 2515989,
 "data": {
   "181": {
     "animalID": "181",
     "animalName": "Sophie",
     "animalBreed": "Domestic Short Hair / Domestic Short Hair / Mixed (short coat)",
     "animalGeneralAge": "Adult",
     "animalSex": "Female",
     "animalPrimaryBreed": "Domestic Short Hair",
     "animalUpdatedDate": "6/26/2015 2:00 PM",
     "animalOrgID": "12",
     "animalLocationDistance": ""

您会在其中看到181个ID。有人知道如何处理181,以便我将其指定为密钥吗?该数字可以是任何数字,并且每个数字都不相同。

想要这样的事情

struct messages: Codable {
    var generalMessages: [String]
    var recordMessages: [String]
}

struct data: Codable {
    var
}

struct Cat: Codable {
    var Status: String
    var messages: messages
    var foundRows: Int
    //var 181: [data] //What do I place here
}

提前致谢。


问题答案:

请检查 :

struct ResponseData: Codable {
    struct Inner : Codable {
        var animalID   : String
        var animalName : String

        private enum CodingKeys : String, CodingKey {
            case animalID     = "animalID"
            case animalName   = "animalName"
        }
    }

    var Status: String
    var foundRows: Int
    var data : [String: Inner]

    private enum CodingKeys: String, CodingKey {
        case Status = "status"
        case foundRows = "foundRows"
        case data = "data"
    }
}

let json = """
    {
        "status": "ok",
        "messages": {
            "generalMessages": ["dsfsdf"],
            "recordMessages": ["sdfsdf"]
        },
        "foundRows": 2515989,
        "data": {
            "181": {
                "animalID": "181",
                "animalName": "Sophie"
            },
            "182": {
                "animalID": "182",
                "animalName": "Sophie"
            }
        }
    }
"""
let data = json.data(using: .utf8)!
let decoder = JSONDecoder()

do {
    let jsonData = try decoder.decode(ResponseData.self, from: data)
    for (key, value) in jsonData.data {
        print(key)
        print(value.animalID)
        print(value.animalName)
    }
}
catch {
    print("error:\(error)")
}


 类似资料:
  • 问题内容: 我正在编写一个脚本,尝试在Python 2.6中尝试将字节编码为许多不同的编码。有什么方法可以获取可供迭代的可用编码列表? 我尝试执行此操作的原因是因为用户的某些文本编码不正确。有有趣的人物。我知道将它弄乱的Unicode字符。我希望能够给他们一个答案,例如“您的文本编辑器将该字符串解释为X编码,而不是Y编码”。我以为我会尝试使用一种编码对该字符进行编码,然后使用另一种编码再次对其进行

  • 问题内容: 我想知道是否有任何方法可以解析这样的URL: 进入 类似于Firefox进行的URL重写,即仅粘贴以前的URL,然后将其发送到服务器(除非有这样的站点,否则没有响应),然后从导航栏中复制URL并将其粘贴到其他位置。 使用给我这个(不需要的)输出: 不幸的是,我收到问题开头所示的字符串,因此直接使用不起作用。 我天真地尝试了这个: 并给出以下(更好的)输出: 但是我不确定是否有针对此问题

  • 问题内容: 是首选使用“ Id”作为主键的列名还是使用“ [TableName] Id”作为命名约定? 表:帐户 主键:ID - 相对 - 表:帐户 主键:AccountId 在我所看到的实现中,似乎分成了大约50%/ 50%。每种方法的优点和缺点是什么? 跟进: 在我的数据库中使用一种约定,在代码中对我的实体使用另一种约定是否有意义?还是应该让它们保持一致?在大多数ORM中,这如何最好地工作?

  • Swift 3 与 Objective-C 的 API 接口比以前的版本更好用了。比如说,Swift 2 把 Objective-C 中的 id 映射为 Swift 中的 AnyObject ,它一般能储存类类型的值。Swift 2 同样为一些桥接的值类型提供了隐式的 AnyObject  ,比如说 String 、 Array 、 Dictionary 、 Set 以及某些数值,作为一种 Swi

  • 我有这样一个csv文件 我在读书

  • 问题内容: 当我发送多个推送通知时,我需要将它们全部显示在按发送desc的时间排序的通知栏中。我知道我应该使用唯一的通知- 我尝试生成随机数,但这不能解决我的问题,因为我需要对它们进行订购。我尝试使用,但仍然没有得到想要的结果。 我需要最好和最简单的方法来生成一个int ID,该ID可以递增以将其分配为通知ID。 问题答案: 您为所有通知使用相同的通知ID(值始终为1)。您可能应该将通知ID分离到