Если сомневаетесь, запишите структуру ваших данных JSON.Например:
{
sethostname = (
{
msgs = "Updating Apache configuration\nUpdating cPanel license...Done. Update succeeded.\nBuilding global cache for cpanel...Done";
status = 1;
statusmsg = "Hostname Changed to: a.host.name.com";
warns = (
);
});
}
(в действительности, в формате списка свойств NeXTSTEP) означает, что у вас есть словарь верхнего уровня.Этот словарь верхнего уровня содержит ключ с именем sethostname
, значением которого является массив.Этот массив состоит из словарей, каждый словарь имеет набор ключей: msgs, status, statusmsg, warns
.msgs
имеет строковое значение, status
имеет числовое значение, statusmsg
имеет строковое значение ,
warns` имеет значение массива:
dictionary (top-level)
sethostname (array of dictionaries)
dictionary (array element)
msgs (string)
status (number)
statusmsg (string)
warns (array)
??? (array element)
Поняв эту структуру, ваш код долженвыглядеть так:
NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&myError];
if (!res) { // JSON parser failed }
// dictionary (top-level)
if (![res isKindOfClass:[NSDictionary class]]) {
// JSON parser hasn't returned a dictionary
}
// sethostname (array of dictionaries)
NSArray *setHostNames = [res objectForKey:@"sethostname"];
// dictionary (array element)
for (NSDictionary *setHostName in setHostNames) {
// status (number)
NSNumber *status = [setHostName objectForKey:@"status"];
// statusmsg (string)
NSString *statusmsg = [setHostName objectForKey:@"statusmsg"];
…
}