iPhone SDK: проблемы с анализом JSON - PullRequest
1 голос
/ 04 ноября 2011

Я использую SBJSONParser для своего приложения для iphone.До сих пор я разбирал простые строки json, такие как: ["Business1","Business2"]

Теперь я использую PHP, чтобы получить как название компании, так и идентификатор компании из базы данных в пределах одной строки json, поэтому мойPHP дает мне такой результат:

{"business_1A" : "ABC_1","businees_2A": "ABC_2" }

Вот код, который я сейчас использую для обработки первого вывода JSON, который работает нормально:

businessNames - это NSMutableArray в следующемcode.

NSString *businessNamesJSON = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"businessNamesJSON.php"]]];

SBJsonParser *parser = [[SBJsonParser alloc]init];
businessNames = [[parser objectWithString:businessNamesJSON error:nil]copy];

По сути, я хочу разделить второй вывод JSON, чтобы у меня было два отдельных NSMutableArrays, один из которых содержит бизнес-имена, а другой - идентификаторы.Как извлечь или разделить второй вывод JSON, чтобы я мог это сделать?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Hy там

Позвольте мне сделать шаг назад.Поскольку у вас есть список компаний , не лучше ли представить ваши данные с помощью массива в формате json, например:

[
    {
        "identifier": "ABC_1",
        "name": "business_1A"
    },
    {
        "identifier": "ABC_2",
        "name": "businees_2A"
    }
] 

Я полагаю, что это приведет к анализуданные будут проще для вас, и это позволит вам добавить больше атрибутов в будущем.

Так что, получив такую ​​структуру, вы можете проанализировать данные json, а затем выполнить циклический просмотр записей и извлечь значения для ключей identifier и name (в данном случае) соответственно.

0 голосов
/ 04 ноября 2011

{"business_1A" : "ABC_1","businees_2A": "ABC_2" } определил объект в терминах JSON, который будет возвращен любым вменяемым анализатором JSON как NSDictionary в Objective-C, представляющий собой набор отображений из одного объекта в другой.

Похоже, тогдахотеть все ключи и все значения отдельно.В этом случае вы можете просто получить их у NSDictionary:

SBJsonParser *parser = [[SBJsonParser alloc] init];
businessNamesDictionary = [parser objectWithString:businessNamesJSON error:nil];

NSLog(@"names: %@", [businessNamesDictionary allKeys]);
NSLog(@"values: %@", [businessNamesDictionary allValues]);

Взять mutableCopy с, если хотите.Используйте objectsForKeys:notFoundMarker:, если вы хотите гарантировать, что значения выходят в том же порядке, что и ключи - порядок каждого явно не определен в документации, поэтому не полагайтесь на тот порядок, в котором вы оказались на любой версии ОСвам довелось проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...