2010-09-22 3 views
0

У меня есть NSString, который мне нужно «очистить», прежде чем загружать его в мой json, но я не могу найти способ сделать это.NSString манипуляция

Это мой NSString:

"DUMMY({parameters:{code:"60246", language:"en", country:"en"}, result:{"...JSON...});" 

В принципе мне нужно удалить все, кроме: {»... JSON ...}

Проблема заключается в том, что коды и т.д. изменить

ответ

4

Если строка, по крайней мере последовательно построен в формате, который вы дали, вы могли бы использовать this:

NSUInteger rangeStart = [string rangeOfString:@"result:"].location; 
NSUInteger lastBrace = [string rangeOfString:@"}" options:NSBackwardsSearch].location; 
NSUInteger jsonStart = rangeStart + [@"result:" length]; 
NSUInteger jsonLength = lastBrace - jsonStart + 1; 
NSRange jsonRange = NSMakeRange(jsonStart, jsonLength); 
NSString *justJson = [string substringWithRange:jsonRange]; 

Вот несколько более кратким, но, возможно, менее эффективным, method:

NSUInteger rangeStart = [string rangeOfString:@"result:"].location; 
NSString *justJson = [string substringFromIndex:rangeStart + [@"range:" length]]; 
NSUInteger lastBrace = [justJson rangeOfString:@"}" options:NSBackwardsSearch].location; 
justJson = [justJson substringToIndex:lastBrace+1]; 
+0

первый удалять все, кроме первого: после результата? – TheLearner

+0

Извините, в примере вместо строки «результат» используется строка «range». Если бы «NSRange» на моем мозгу и запутался. :) – mipadi

+0

не уверен, что вы имеете в виду, но первый фрагмент кода оставляет одинокий: цвет перед json – TheLearner

1

? Почему бы вам не преобразовать в NSDictionary, а затем извлечь только элемент с ключом «результат»? Например, вы можете использовать JSONFramework и сделать что-то вроде этого:

NSDictionary* dic = [yourJsonEncodedStrin JSONValue]; 
id result = [dic objectForKey:@"result"]; 

Вы можете преобразовать обратно в строку с помощью:

NSString* resultString = [result JSONRepresentation];