Разбор массива JSON в iOS с помощью JSONKit - массив без тега для ObjectForKey? - PullRequest
5 голосов
/ 12 декабря 2011

Я пытаюсь проанализировать массив JSON, возвращаемый веб-API RESTful, который выглядит следующим образом (с использованием JSONKit):

[ { "DateCreated" : "/Date(1320296400000)/",
    "ID" : 1,
    "Summary" : "Summary 1",
    "Title" : "Title 1",
    "URL" : "URL 1"
  },
  { "DateCreated" : "/Date(1320296400000)/",
    "ID" : 2,
    "Summary" : "Summary 2",
    "Title" : "Title 2",
    "URL" : "URL 2"
  }
]

JSON, с которым я работал в прошлом, обычно имел родительский элемент, например news:{{node1},{node2}}, который позволил бы мне извлечь этот узел из ответа JSON, например:

NSString *response = [request responseString];
NSDictionary *deserializedData = [response objectFromJSONString];
NSArray *arrNews = [deserializedData objectForKey:@"news"];

В моем JSON такого узла не существует, это просто необработанный массив. Как мне потянуть это в NSArray (или что-то, что я могу подключить к UITableView)?

Ответы [ 2 ]

10 голосов
/ 12 декабря 2011

Судя по вашим данным JSON, похоже, что ваши deserializedData уже должны быть JKArray , заполненными JKDictionary объектами.

Вы пытались обращаться к нему как к массиву?

for (NSDictionary * dataDict in deserializedData) {
    NSString * timeStamp = [dataDict objectForKey:@"DateCreated"];
    // and so on
}

Это должно пройти через все элементы в данных JSON.

1 голос
/ 12 декабря 2011

Допустимая строка JSON может иметь в качестве внешнего «контейнера» либо массив, либо словарь / «объект».JSON в вашем примере имеет массив в качестве внешнего «контейнера».Совершенно законно.

Если вы не знаете, чего ожидать, вы должны проверить объект, чтобы увидеть, какой он.

...