You have a dictionary from your JSON
Where key: "posts" = an array of individual dictionaries
So we received a Dictionary, and we removed the object stored at key "posts" which is an array. This array happens to contain more dictionaries. So when we get our blog post,
NSDictionary *blogPost = self.blogPosts[someNumber];
We receive a new dictionary that was stored in the array.
Main dictionary >> array of posts >> post as dictionary
I wanted to say as well, that the array doesn't contain key/value pairs. Just as you said an array can be an array of arrays, an array can be an array of dictionaries.