2015-12-31 10 views
0

Вот мой ответ контактов номер мобильного телефона и имяПреобразование данных NSString в формат JSON

2015-12-31 13:39:58.563 LCall[1448:53537] 888-555-1212 
2015-12-31 13:39:58.563 LCall[1448:53537] John Appleseed 
2015-12-31 13:39:58.564 LCall[1448:53537] (415) 555-3695 
2015-12-31 13:39:58.565 LCall[1448:53537] Kate Bell 
2015-12-31 13:39:58.565 LCall[1448:53537] 555-522-8243 
2015-12-31 13:39:58.565 LCall[1448:53537] Anna Haro 
2015-12-31 13:39:58.566 LCall[1448:53537] (408) 555-3514 
2015-12-31 13:39:58.566 LCall[1448:53537] Daniel Higgins 
2015-12-31 13:39:58.567 LCall[1448:53537] 555-610-6679 
2015-12-31 13:39:58.567 LCall[1448:53537] David Taylor 
2015-12-31 13:39:58.568 LCall[1448:53537] (707) 555-1854 
2015-12-31 13:39:58.568 LCall[1448:53537] Hank Zakroff` 

Я хочу, чтобы преобразовать номер своего мобильного телефона в форме ниже

{"contacts":["+918146411786","8528840200"]} 

или формате JSON.

+0

Почему вы хотите, чтобы преобразовать его в формат JSON? Это просто одноразовое преобразование? Или вы будете делать это регулярно? Если первый, вы можете использовать регулярные выражения в текстовом редакторе, таком как Notepad ++. В последнем случае я бы написал небольшую программу для этого. Если вы анализируете эти результаты из веб-службы, вам потребуется выполнить несколько шагов с обработкой строк, чтобы получить требуемый JSON. – mikeyq6

+0

дуб я хочу передать этот результат веб-сервисам, то каков шаг –

ответ

0

Вы могли бы попробовать что-то вроде:

-(void)parseResultsString:(NSString *)input into:(NSString *)output { 
    int phoneNumberStartingIndex = 40; 
    NSMutableString* result = @"{\"contacts\":["; 

    NSCharacterSet *separator = [NSCharacterSet newlineCharacterSet]; 
    NSArray *rows = [input componentsSeparatedByCharactersInSet:separator]; 
    int counter = 0; 
    NSString *comma = @""; 

    for (NSString* line in rows) { 
     if(counter % 2 == 0) { // Skip every 2nd line 
      NSString *number = [line substringFromIndex:phoneNumberStartingIndex]; 
      [result appendFormat:@"%@\"%@\"", comma, number]; 
      comma = @","; 
     } 
    } 
    [result [email protected]"]}"]; 
    output = result; 
} 

выше делает некоторые предположения, (1), что формат входных данных всегда будет означать, что телефонный номер находится в том же положении для каждой линии, и (2), что формат всегда будет означать, что номер телефона находится только на линиях нечетного номера.

Если вам нужно разобрать числа в определенном формате, вы можете добавить еще одну функцию для форматирования номера перед добавлением его в строку результата.

0

Вот мои предположения (оно не должно быть необходимым, чтобы делать какие-либо предположения при ответе на вопрос):

  1. Исходные данные содержатся в массиве с имя1, number1, Имя2, number2 и т.д.
  2. Вы хотите извлечь номера и поместить их в словарь с «контактами» в качестве ключа и значением в виде массива чисел.
  3. Вы хотите отформатировать словарь в JSON для отправки куда-нибудь.

NSArray *namesAndNumbers = ...; 
NSAssert(([namesAndNumbers count] & 1) == 0, @"Input array has odd number of elements"); 
NSMutableArray *numbers = [NSMutableArray new]; 
for (NSUInteger i = 1; i < [namesAndNumbers count]; i += 2) { 
    [numbers addObject:namesAndNumbers[i]]; 
} 
NSDictionary *contacts = @{ @"contacts" : numbers }; 
NSError *error = nil; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:containts 
                options:0 
                error:&error]; 
if (jsonData) { 
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
    // Do something with string 
} else { 
    NSLog(@"Failed to format JSON: %@", [error localizedDescription]); 
} 
+0

все еще не получается –

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