2014-02-21 4 views
-2

Вот массив:как преобразовать этот массив в JSON (IOS)

2011-1-1 
2011-1-2 
2011-3-3 
2012-1-4 
2012-1-5 
2012-6-7 
2012-6-9 
2013-1-3 
2013-1-8 
2013-9-1 
2013-9-2 
2014-3-7 
2014-3-13 
2014-4-1 
2014-4-17 

Мне нужно преобразовать это NSDictionary с вложенными NSArray к JSon, как это (использование Objective-C):

{ 
     "y2011m1": [ 
      "2011-1-1", 
      "2011-1-2" 
     ], 
     "y2011m3": [ 
      "2011-3-3" 
     ], 
     "y2012m1": [ 
      "2012-1-4", 
      "2012-1-5" 
     ], 
     "y2012m6": [ 
      "2012-6-7", 
      "2012-6-9" 
     ], 
     "y2013m1": [ 
      "2013-1-3", 
      "2013-1-8" 
     ], 
     "y2013m9": [ 
      "2013-9-1", 
      "2013-6-2" 
     ], 
     "y2014m3": [ 
      "2014-3-7", 
      "2014-3-13" 
     ], 
     "y2014m4": [ 
      "2014-4-1", 
      "2014-4-17" 
     ] 
    } 

В те же годы и в том же месяце «yxxxmx», и группа, я не знаю, как это сделать (используйте цель-c), пожалуйста, помогите мне, спасибо.

+0

[Что вы пробовали до сих пор?] (Http://whathaveyoutried.com) – Sebastian

+0

Он серьезно присоединился к сообществу. Если вы собираетесь голосовать за него, сообщите им, почему они могут лучше внести свой вклад. –

ответ

3

Я думаю, вы должны сначала преобразовать массив в NSDictionary, а затем использовать метод NSJSONSerialization.

[NSJSONSerialization dataWithJSONObject: options: error:] 
[NSJSONSerialization JSONObjectWithData: options: error:] 

NSDictionary * toJson = @{@"y2001m1" : @[@"2011-1-1", @"2011-1-2"]}; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:toJson options:0 error:&error]; 

Он будет генерировать то, что вы хотите.

0

Код для кон верт свой входной массив в свой словарь формат:

NSArray *datesArr = @[@"2011-1-1", @"2011-1-2", @"2011-3-3", @"2012-1-4", @"2012-1-5", @"2012-6-7", @"2012-6-9", @"2013-1-3", @"2013-1-8", @"2013-9-1", @"2013-9-2", @"2014-3-7", @"2014-3-13", @"2014-4-1", @"2014-4-17"]; 
for (NSString *date in datesArr) { 
    NSArray *subStrArr = [date componentsSeparatedByString:@"-"]; 
    NSString *ymStr = [NSString stringWithFormat:@"y%@m%@", [subStrArr objectAtIndex:0], [subStrArr objectAtIndex:1]]; 
    if ([jsonDict objectForKey:ymStr]) { 
     NSMutableArray *ymStrJsonArray = [jsonDict objectForKey:ymStr]; 
     [ymStrJsonArray addObject:date]; 
     [jsonDict setObject:ymStrJsonArray forKey:ymStr]; 
    } 
    else { 
     NSMutableArray *ymStrJsonArray = [[NSMutableArray alloc] initWithArray:@[date]]; 
     [jsonDict setObject:ymStrJsonArray forKey:ymStr]; 
    } 
} 
NSLog(@"dict = %@", jsonDict); 

затем конвертировать jsonDict (NSDictionary) в формате JSON. Надеюсь, что этот код поможет вам

0

NSError * error; NSData * jsonData2 = [NSJSONSerialization dataWithJSONObject: // передаем ваш массив здесь: NSJSONWritingPrettyPrinted error: & error]; NSString * jsonString = [[NSString alloc] initWithData: jsonData2 encoding: NSUTF8StringEncoding];

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