Ios 如何将JSON中的字典与领域一起使用?

Ios 如何将JSON中的字典与领域一起使用?,ios,swift,realm,Ios,Swift,Realm,创建用于codable和realm的数据模型。我被字典卡住了。据我所知,你不能将字典用于领域?如何解码以下JSON并将其与Realm可以接受的内容一起使用 JSON示例A "platform": { "data": { "25": { "id": 25, "name&quo

创建用于codable和realm的数据模型。我被字典卡住了。据我所知,你不能将字典用于领域?如何解码以下JSON并将其与Realm可以接受的内容一起使用

JSON示例A

"platform": {
            "data": {
                "25": {
                    "id": 25,
                    "name": "3DO",
                    "alias": "3do"
                },
                "4944": {
                    "id": 4944,
                    "name": "Acorn Archimedes",
                    "alias": "acorn-archimedes"
                },
                "4954": {
                    "id": 4954,
                    "name": "Acorn Electron",
                    "alias": "acorn-electron"
                }
}
注意,键是变化的字符串,在可解码的形式中,我将其作为

结构示例A

"platform": {
            "data": {
                "25": {
                    "id": 25,
                    "name": "3DO",
                    "alias": "3do"
                },
                "4944": {
                    "id": 4944,
                    "name": "Acorn Archimedes",
                    "alias": "acorn-archimedes"
                },
                "4954": {
                    "id": 4954,
                    "name": "Acorn Electron",
                    "alias": "acorn-electron"
                }
}
struct PlatformData : Codable {

let data : [String: PlatformInformation]
}

JSON示例B

"include": {
        "boxart": {
            "base_url": {
                "original": "https:\/\/cdn.thegamesdb.net\/images\/original\/",
                "small": "https:\/\/cdn.thegamesdb.net\/images\/small\/",
                "thumb": "https:\/\/cdn.thegamesdb.net\/images\/thumb\/",
                "cropped_center_thumb": "https:\/\/cdn.thegamesdb.net\/images\/cropped_center_thumb\/",
                "medium": "https:\/\/cdn.thegamesdb.net\/images\/medium\/",
                "large": "https:\/\/cdn.thegamesdb.net\/images\/large\/"
            },
            "data": {
                "1": 
                [
                    {
                        "id": 242,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/1-2.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 433,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/1-5.jpg",
                        "resolution": "1920x1080"
                    }
],
                "2": 
                [
                    {
                        "id": 15,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-1.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 133,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-2.jpg",
                        "resolution": "1920x1080"
                    },

                    {
                        "id": 656,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-4.jpg",
                        "resolution": "1920x1080"
                    }

                ],
                "4": 
                [
                    {
                        "id": 208,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/4-1.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 481,
                        "type": "banner",
                        "side": null,
                        "filename": "graphical\/4-g.jpg",
                        "resolution": null
                    },
                    {
                        "id": 846,
                        "type": "boxart",
                        "side": "front",
                        "filename": "boxart\/front\/4-1.jpg",
                        "resolution": "1000x705"
                    },
                    {
                        "id": 847,
                        "type": "boxart",
                        "side": "back",
                        "filename": "boxart\/back\/4-1.jpg",
                        "resolution": "1000x705"
                    },
                    {
                        "id": 73897,
                        "type": "clearlogo",
                        "side": null,
                        "filename": "clearlogo\/4.png",
                        "resolution": "400x148"
                    },
                    {
                        "id": 215539,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/4-2.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238533,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-1.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238534,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-2.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238535,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-3.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238536,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-4.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238537,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-5.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238538,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-6.jpg",
                        "resolution": null
                    }
                ],
                "5": 
                [
                    {
                        "id": 396,
                        "type": "banner",
                        "side": null,
                        "filename": "graphical\/5-g.jpg",
                        "resolution": null
                    },
                    {
                        "id": 2364,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/5-4.jpg",
                        "resolution": "1920x1080"
                    },
]
                
struct BoxArtData : Codeable {
let data: [String:[ExtraImages]]
}
这里与此类似,只是现在使用了一个对象数组作为值 结构示例B

"include": {
        "boxart": {
            "base_url": {
                "original": "https:\/\/cdn.thegamesdb.net\/images\/original\/",
                "small": "https:\/\/cdn.thegamesdb.net\/images\/small\/",
                "thumb": "https:\/\/cdn.thegamesdb.net\/images\/thumb\/",
                "cropped_center_thumb": "https:\/\/cdn.thegamesdb.net\/images\/cropped_center_thumb\/",
                "medium": "https:\/\/cdn.thegamesdb.net\/images\/medium\/",
                "large": "https:\/\/cdn.thegamesdb.net\/images\/large\/"
            },
            "data": {
                "1": 
                [
                    {
                        "id": 242,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/1-2.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 433,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/1-5.jpg",
                        "resolution": "1920x1080"
                    }
],
                "2": 
                [
                    {
                        "id": 15,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-1.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 133,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-2.jpg",
                        "resolution": "1920x1080"
                    },

                    {
                        "id": 656,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/2-4.jpg",
                        "resolution": "1920x1080"
                    }

                ],
                "4": 
                [
                    {
                        "id": 208,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/4-1.jpg",
                        "resolution": "1920x1080"
                    },
                    {
                        "id": 481,
                        "type": "banner",
                        "side": null,
                        "filename": "graphical\/4-g.jpg",
                        "resolution": null
                    },
                    {
                        "id": 846,
                        "type": "boxart",
                        "side": "front",
                        "filename": "boxart\/front\/4-1.jpg",
                        "resolution": "1000x705"
                    },
                    {
                        "id": 847,
                        "type": "boxart",
                        "side": "back",
                        "filename": "boxart\/back\/4-1.jpg",
                        "resolution": "1000x705"
                    },
                    {
                        "id": 73897,
                        "type": "clearlogo",
                        "side": null,
                        "filename": "clearlogo\/4.png",
                        "resolution": "400x148"
                    },
                    {
                        "id": 215539,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/4-2.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238533,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-1.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238534,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-2.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238535,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-3.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238536,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-4.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238537,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-5.jpg",
                        "resolution": null
                    },
                    {
                        "id": 238538,
                        "type": "screenshot",
                        "side": null,
                        "filename": "screenshot\/4-6.jpg",
                        "resolution": null
                    }
                ],
                "5": 
                [
                    {
                        "id": 396,
                        "type": "banner",
                        "side": null,
                        "filename": "graphical\/5-g.jpg",
                        "resolution": null
                    },
                    {
                        "id": 2364,
                        "type": "fanart",
                        "side": null,
                        "filename": "fanart\/5-4.jpg",
                        "resolution": "1920x1080"
                    },
]
                
struct BoxArtData : Codeable {
let data: [String:[ExtraImages]]
}

RealmSwift不支持字典。看看@DoesData,答案是2015年的,已经过时了。您可以轻松地与Realm一起使用。您甚至可以使用创建对象。还支持对JSON进行编码和解码。但是:答案将取决于对象如何交互。换句话说,在示例A中,平台有数据,但子数据本身似乎是其他对象的列表。正确吗?@Jay正确,在字典中,它有一个ID号作为字符串作为键,然后是一个其他对象的列表作为值。如果我输入适当的ID字符串,我就可以访问底层对象
let realmObject=realmObject类(值:[“id”:242,“type”:“fanart”])
然后将其添加到列表中
let myList=list
。列表与数组非常相似,其行为方式也类似。