Как изменить текст, получаемый JSON'oм?

Рейтинг: 0Ответов: 1Опубликовано: 10.10.2014

Доброго времени суток. Мне нужно изменить текст получаемого JSON из php, изменить нужно только значения ключа "text", не задев другие ключи в словаре.
Мой JSON:

NSString *googleString7 = [NSString stringWithFormat:@"%@%@", @"http://mysite.ru/?go=api&act=message&id=",idLoad];
    NSURL *googleURL7 = [NSURL URLWithString:googleString7];
    NSString *googlePage7 = [NSString stringWithContentsOfURL:googleURL7
                                                     encoding:NSWindowsCP1251StringEncoding
                                                        error:&error3];

    NSMutableString *dat7 = [NSMutableString stringWithString: googlePage7];

    NSString *dat5 = dat7;
    NSData *allcur = [dat5 dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *responseD = [NSJSONSerialization JSONObjectWithData:allcur options:NSJSONReadingMutableContainers error:nil];

    if ([NSJSONSerialization isValidJSONObject:responseD])
    {
        NSArray *array = [responseD objectForKey:@"locations"];

        [array enumerateObjectsUsingBlock:^(NSDictionary *msg, NSUInteger idx, BOOL *stop)
         {
             Message *message = [[Message alloc] init];
             int typees = [[msg objectForKey:@"type"] intValue];

             if (typees == 2) {
                 typees = 0;
             }
             else
             {
                 typees = 1;
             }
             message.fromMe = typees;
             message.text = [msg objectForKey:@"text"];

             NSDateFormatter *dateTo = [[NSDateFormatter alloc] init];
             [dateTo setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
             NSDate *dateOnl = [dateTo dateFromString:[msg objectForKey:@"date"]];
             message.date = dateOnl;

             [result addObject:message];
         }];
    }

Можно было бы после message.text = [msg objectForKey:@"text"]; обрабатывать его, но т.к. обрабатывать я буду тоже через сервер, пост запросом, это очень сильно будет нагружать сервер и задерживать работу программы, хотелось бы одним махом обработать все значения ключей "text". Если попытаться обработать JSON перед запихиванием в массив, то ничего не выйдет, т.к. текст JSON выглядит так: \u041a\u0410\u041a.

Подскажите, как бы сделали вы?

Ответы

▲ 1

"Если попытаться обработать JSON перед запихиванием в массив, то ничего не выйдет, т.к. текст JSON выглядит так: \u041a\u0410\u041a." - это вам NSLog так показывает :) На самом деле \u041a - это юникодный символ (русская буква). После message.text = [msg objectForKey:@"text"]; делайте с текстом что хотите.

PS. Загрузка методом - NSString stringWithContentsOfURL - это ужасно.