Your little problem is that you use different key for the city, its name. Consider this:
var cities = {
"Cairo": [
{ "name": "Place 1" },
{ "name": "Place 2" },
{ "name": "Place 3" }],
"Giza":[
{"name":"My Place 1"},
{"name":"My Place 2"},
{"name":"My Place 3"}]
}
for (city in cities)
for (var index=0; index < cities[city].length; ++index)
alert(city + ": place name: " + cities[city][index].name)
Are you getting the idea?
Your structure is 3-level, not 2-level. It's not "city", it's a set of cities. Each city has something you could call "places", also a set, but expressed as an array. And finally, this is an array of objects, not string, only each object has the only property "name".
—SA