0

我正在尝试解析以下 JSON,但出现以下错误。

“错误找不到 keyPath 的对象映射:''”

据我了解,这是因为我没有提供 SetMapping: forKeyPath: 但我无法设置它,因为您可以在 JSON 中看到密钥会发生变化,例如 BBC ONE、BBC TWO 等。我不需要保存服务名称,因为我计划将 SID 与另一个 json 文件交叉引用,该文件包含存储在核心数据中的这些详细信息以提供此服务。(如果它是可能的)。有没有办法解决这个错误?

这是我的 JSON(精简版)

{
    "BBC ONE": [
        {
            "Name": "Programme 1",
            "Description": "A desc of a programme",
            "ONID": 1,
            "TSID": 2,
            "SID": 3,
            "CRID": "crid_address"
        },
        {
            "Name": "Programme 2",
            "Description": " Another desc",
            "ONID": 9,
            "TSID": 99,
            "SID": 999,
            "CRID": "crid_2"
        }
    ],
    "BBC TWO": [
        {
            "Name": "bbc_programme",
            "Description": "programme 2",
            "Event ID": 4,
            "ONID": 9,
            "TSID": 4,
            "SID": 4,
            "CRID": "crid"
        }
    ]
}

和更多。

这是我的代码:

RKManagedObjectMapping *epgMapping = [RKManagedObjectMapping mappingForClass:[Epg class] inManagedObjectStore:objectManager.objectStore];

        [epgMapping mapKeyPathsToAttributes:@"Name",@"name",
                                        @"Description", @"desc",
                                        @"Event ID", @"event_id",
                                        @"ONID", @"onid",
                                        @"TSID", @"tsid",
                                        @"SID",  @"sid",
                                        @"CRID", @"crid",nil];


    epgMapping.primaryKeyAttribute = @"crid";

任何帮助将不胜感激,因为我已经阅读了各种文件并查看了其他人的问题并且找不到解决方案。

谢谢

4

1 回答 1

1

您将一个值存储在 json 名称-值对的名称部分。建议将您的 json(如果可以的话)更改为以下内容:

"Name" : "BBC ONE",
"Programs" : [
    {
        "Name": "Programme 1",
        "Description": "A desc of a programme",
        "ONID": 1,
        "TSID": 2,
        "SID": 3,
        "CRID": "crid_address"
    },
    {
        "Name": "Programme 2",
        "Description": " Another desc",
        "ONID": 9,
        "TSID": 99,
        "SID": 999,
        "CRID": "crid_2"
    }
于 2012-10-23T16:23:50.723 回答