2013-04-25 2 views
0

Я пытаюсь использовать веб-сервис, сделанный моим клиентом на iPhone. Он использовался, из того, что они сказали мне, используя WCF. Проблема в том, что мне нужно отправить кучу параметров в метод, и один из них - это ключ, называемый «__type», который должен быть первым ключом в словаре. Я пытался утверждать, что словари, по определению, не гарантируют порядок ключей, но настаивают на необходимости того, чтобы этот конкретный ключ был первым в словаре. Из того, что я собрал, это свойство - это то, что они называют подсказкой типа, и оно действительно должно быть первым свойством в словаре.Позиция ключа «__type» в сервисе JSON WCF потребляется на iPhone

Есть ли способ для меня сделать это на iPhone?

+0

Здравствуйте! Вы нашли способ, как это сделать? Благодаря! – MagicMax

ответ

0

Возможно, немного поздно, но я бы порекомендовал SBJson framework для этого.

Установив свойство sortKeys на SBJsonwriter, ваши ключи будут отсортированы в алфавитном порядке. Предположительно, ваши ключи имеют имена, которые сделают __type первым ключом в отсортированном JSON.

NSDictionary *unsortedDictionary = [[NSDictionary alloc] 
            initWithObjectsAndKeys: 
            @"Doe", @"lastName", 
            @"Person", @"__type", 
            @"John",@"firstName", 
            nil]; 

SBJsonWriter *writer = [[SBJsonWriter alloc] init]; 
writer.sortKeys = YES; 
NSLog(@"%@",[writer stringWithObject:unsortedDictionary]); 

Это произведет хорошо отсортирован JSON:

{"__type": "Person","firstName": "John","lastName": "Doe"} 
+0

Спасибо! просто для обновления, с SBJson4, сортировка привела к тому, что __type будет в последнем объекте, вам нужно будет реализовать 'writer.sortKeysComparator =^NSComparisonResult (id obj1, id obj2) {return [obj2 compare: obj1]; }; 'для изменения порядка, поэтому __type является первым. – soemarko

Смежные вопросы