2015-09-30 2 views
0

Я конвертирую свою строку json в NSMutableDictionary, используя приведенный ниже код, он работает нормально, но если есть какие-то нежелательные пробелы, то словарь становится нулевым, я тестировал его с JSON lint, JSON parser, если я удалю вручную, что пустое пространство, которое строка JSON станет действительным, существует какой-либо метод для удаления этих пробелов в JSON String.Как удалить пробелы в строке JSON в Objective-c

NSMutableDictionary *responseDictionary; 
     NSData * data = (NSData *)responseObject; 
     NSString *jsonString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
     responseDictionary = [NSJSONSerialization JSONObjectWithData:data 
                   options:NSJSONReadingMutableContainers 
                   error:nil]; 
     NSLog(@"the value in the dic is%@",responseDictionary); 

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

+4

Похоже, что его нужно исправлять в программном обеспечении JSON. – Droppy

+0

см. Эту ссылку: http://stackoverflow.com/questions/8075147/replace-all-nsnull-objects-in-an-nsdictionary –

+0

Возможный дубликат [Свернуть последовательности пробелов в один символ] (http://stackoverflow.com/questions/758212/collapse-sequences-of-white-space-into-a-single-character) –

ответ

1

Ok, так что если вы уверены, что вам нужно сделать это самостоятельно, вот способ сделать это:

NSString *theString = @" Hello  this is a long  string! "; 

NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet]; 
NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"]; 

NSArray *parts = [theString componentsSeparatedByCharactersInSet:whitespaces]; 
NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings]; 
theString = [filteredArray componentsJoinedByString:@""]; // using empty string to concatenate the strings 

P.S. Это слегка измененный вариант этого ответа (автор заслуживает upvote ИМХО): https://stackoverflow.com/a/1427224/2799410

0

Попробуйте это:

NSString *newString= [jsonString stringByReplacingOccurrencesOfString:@" " 
                  withString:@""]; 

Теперь newString не будет иметь каких-либо пробелов.

+0

PO хотел удалить не только отдельные пробелы, но и все вхождения символов семейства пробелов (например, символы новой строки, пробелы, вкладки и т. Д.). –

+0

Итак, вы можете попробовать следующее:
NSString * string = @ "Hello, World!"; NSCharacterSet * separator = [NSCharacterSet whitespaceAndNewlineCharacterSet]; NSArray * stringComponents = [строковые компонентыSeparatedByCharactersInSet: separator]; –

+0

Это именно то, что я предложил здесь: http://stackoverflow.com/a/32861064/2799410 –

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