简体   繁体   English

字典或带有数组的字典的Arrary?

[英]Arrary of Dictionaries or Dictionary with arrays?

Here is my json from my php page. 这是我的php页面中的json。 Is this an Arrary of Dictionaries or just A dictionary with a keys and Dictionaries inside those keys? 这是字典的Arrary还是只是一个带有键的字典,并且这些键在其中? I think it is the second option but I am not sure because I was getting conflicting options. 我认为这是第二种选择,但我不确定,因为我遇到了一些冲突的选择。 Also would the structure change once it shows in the xcode debugger? 一旦在xcode调试器中显示,结构也会改变吗?

{
    "slots": {
        "2012-08-31 00:00:00 America/Los_Angeles": [
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-30 17:00:00 America/Los_Angeles",
                "end": "2012-08-30 17:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-30 17:30:00 America/Los_Angeles",
                "end": "2012-08-30 18:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": false,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-30 18:00:00 America/Los_Angeles",
                "end": "2012-08-31 00:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": false,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 00:00:00 America/Los_Angeles",
                "end": "2012-08-31 08:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 08:00:00 America/Los_Angeles",
                "end": "2012-08-31 08:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 08:30:00 America/Los_Angeles",
                "end": "2012-08-31 09:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 09:00:00 America/Los_Angeles",
                "end": "2012-08-31 09:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 09:30:00 America/Los_Angeles",
                "end": "2012-08-31 10:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": false,
                "isReserved": true,
                "label": "Joe Smith",
                "begin": "2012-08-31 10:00:00 America/Los_Angeles",
                "end": "2012-08-31 12:30:00 America/Los_Angeles",
                "span": 5
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 12:30:00 America/Los_Angeles",
                "end": "2012-08-31 13:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 13:00:00 America/Los_Angeles",
                "end": "2012-08-31 13:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 13:30:00 America/Los_Angeles",
                "end": "2012-08-31 14:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 14:00:00 America/Los_Angeles",
                "end": "2012-08-31 14:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 14:30:00 America/Los_Angeles",
                "end": "2012-08-31 15:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 15:00:00 America/Los_Angeles",
                "end": "2012-08-31 15:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 15:30:00 America/Los_Angeles",
                "end": "2012-08-31 16:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 16:00:00 America/Los_Angeles",
                "end": "2012-08-31 16:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 16:30:00 America/Los_Angeles",
                "end": "2012-08-31 17:00:00 America/Los_Angeles",
                "span": 1
            }
        ],
        "2012-09-01 00:00:00 America/Los_Angeles": [
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 17:00:00 America/Los_Angeles",
                "end": "2012-08-31 17:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 17:30:00 America/Los_Angeles",
                "end": "2012-08-31 18:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": false,
                "isReserved": false,
                "label": " ",
                "begin": "2012-08-31 18:00:00 America/Los_Angeles",
                "end": "2012-09-01 00:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": false,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 00:00:00 America/Los_Angeles",
                "end": "2012-09-01 08:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 08:00:00 America/Los_Angeles",
                "end": "2012-09-01 08:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 08:30:00 America/Los_Angeles",
                "end": "2012-09-01 09:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 09:00:00 America/Los_Angeles",
                "end": "2012-09-01 09:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 09:30:00 America/Los_Angeles",
                "end": "2012-09-01 10:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 10:00:00 America/Los_Angeles",
                "end": "2012-09-01 10:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 10:30:00 America/Los_Angeles",
                "end": "2012-09-01 11:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 11:00:00 America/Los_Angeles",
                "end": "2012-09-01 11:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 11:30:00 America/Los_Angeles",
                "end": "2012-09-01 12:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 12:00:00 America/Los_Angeles",
                "end": "2012-09-01 12:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 12:30:00 America/Los_Angeles",
                "end": "2012-09-01 13:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 13:00:00 America/Los_Angeles",
                "end": "2012-09-01 13:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 13:30:00 America/Los_Angeles",
                "end": "2012-09-01 14:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 14:00:00 America/Los_Angeles",
                "end": "2012-09-01 14:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 14:30:00 America/Los_Angeles",
                "end": "2012-09-01 15:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 15:00:00 America/Los_Angeles",
                "end": "2012-09-01 15:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 15:30:00 America/Los_Angeles",
                "end": "2012-09-01 16:00:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 16:00:00 America/Los_Angeles",
                "end": "2012-09-01 16:30:00 America/Los_Angeles",
                "span": 1
            },
            {
                "isPending": false,
                "isReservable": true,
                "isReserved": false,
                "label": " ",
                "begin": "2012-09-01 16:30:00 America/Los_Angeles",
                "end": "2012-09-01 17:00:00 America/Los_Angeles",
                "span": 1
            }
        ]
    }

Take a look here: http://www.json.org/ 在这里看看: http : //www.json.org/

Basically you have a dictionary slots that has multiple objects inside. 基本上,您有一个词典slots ,其中有多个对象。 The keys look to be things that look like this 2012-08-31 00:00:00 America/Los_Angeles . 键看起来像是这样的东西2012-08-31 00:00:00 America/Los_Angeles Those keys contain arrays of dictionaries. 这些键包含字典数组。

The best thing you can do is just try it out! 您可以做的最好的事情就是尝试一下! You will lose less time than asking here! 您所浪费的时间将少于在这里询问的时间! Anyway, you have: 无论如何,您有:

 - dictionary, with a "slot" key that has an associated value:
    - dictionary, with a "2012-08-31 00:00:00 America/Los_Angeles" key that that has an associated value:
       - array, containing objects:
          - dictionary1
          - dictionary2
          - ....

So, for example, to access the isPending attribute of the second element: 因此,例如,访问第二个元素的isPending属性:

[[[[dict objectForKey:@"slot"] objectForKey:@"2012-08-31 00:00:00 America/Los_Angeles"] objectAtIndex:1] valueForKey:@"isPending"];

The [ and ] around the dictionaries seems to suggest it's an array of dictionaries. 字典周围的[]似乎暗示它是一系列字典。

Or rather, an Array inside a Dictionary inside a Dictionary . 或者更确切地说,是Dictionary内部的DictionaryArray The first paragraph only addresses the innermost structures. 第一段仅涉及最内部的结构。

You may find it useful to debug using NSLog here. 您可能会发现在此处使用NSLog进行调试很有用。

Assuming you want to find out if you class is an NSArray, Dictionary or another class. 假设您想确定您的类是NSArray,Dictionary还是其他类。 Once you passed the JSON data. 传递JSON数据后。 To see what you get back just log it out. 要查看返回的内容,只需注销即可。

[NSLog(@" JSON data is kind of class %@", [NSStringFromClass([jsonData Class]);

This will tell you what class you json data is. 这将告诉您json数据是什么类。

You can also use the same method to acertain if the next item is a dictionary or an array like this 您还可以使用相同的方法来确定下一个项目是字典还是这样的数组

[NSLog(@" JSON data is kind of class %@",  [NSStringFromClass([[jsonData objectAtIndex:i]Class]);

But purely from observation I would say you have a Dictionary of Dictionaries of Arrays of Dictionaries 但是纯粹从观察的角度来看,我会说您有一本字典词典

Here is how I did it. 这是我的方法。

for (NSString *slotKey in myslots.allKeys) {
    NSDictionary *slot = [myslots valueForKey:slotKey];
        NSArray *tests = [myslots objectForKey:slotKey];
    for (NSDictionary *myDict in tests){
        NSLog(@"%@", [myDict objectForKey:@"begin"]); 
    }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM