2015-05-22 25 views
0

我有3个数组,我想在多个对象转换:如何在JSON中的单个主对象中创建多个对象?

NSArray *finalJSONArray = @[@"0",@"3",@"6",@"8"]; 
NSArray *time = @[@"12am",@"1am",@"2am",@"3am"]; 
NSArray *time = @[@"Sunday",@"Monday",@"Tuesday",@"Wednesday",@"Thursday"]; 

,现在我想以JSON字符串这两个数组转换是这样的:

{ 
"Sunday": { 
    "0": "12 AM", 
    "3": "1 AM", 
    "6": "2 AM", 
    "8": "3 AM" 
}, 
"Monday": { 
    "0": "12 AM", 
    "3": "1 AM", 
    "6": "2 AM", 
    "8": "3 AM" 
}, 
"Tuesday": { 
    "0": "12 AM", 
    "3": "1 AM", 
    "6": "2 AM", 
    "8": "3 AM" 
}, 
"Wednesday": { 
    "0": "12 AM", 
    "3": "1 AM", 
    "6": "2 AM", 
    "8": "3 AM" 
}, 
"Thursday": { 
    "0": "12 AM", 
    "3": "1 AM", 
    "6": "2 AM", 
    "8": "3 AM" 
} 
} 

这里是我的代码现在无填充,我尝试了不同的方法来填充这些NSDictionaries,但不能得到相同的结果:

// Empty array 
NSDictionary *emptyArray = @{}; 

// Single element array 
NSDictionary *singleElementArray = @{}; 

// Array of above arrays 
NSArray *arrayOfObjects = @[emptyArray, singleElementArray]; 

// Dictionary with several kay/value pairs and the above array of arrays 
NSDictionary *dict = @{@"Sunday" : arrayOfObjects}; 

NSError *error = nil; 
NSData *json; 

// Dictionary convertable to JSON ? 
if ([NSJSONSerialization isValidJSONObject:dict]) 
{ 
    // Serialize the dictionary 
    json = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; 

    // If no errors, let's view the JSON 
    if (json != nil && error == nil) 
    { 
     NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding]; 

     NSLog(@"JSON: %@", jsonString); 
    } 
} 
+0

在我看来像你正在做一些疯狂的或处理在一个疯狂的方式已经做了什么。很确定这项任务应该以更简单的方式实施 –

+0

@AndreyChernukha是的,我正在使用此代码: http://iosdevelopertips.com/core-services/ios-and-json-part-1-serialize-objects-to -json.html –

+0

是“0”:“12 AM”,“3”:“1 AM”,“6”:“2 AM”和“8”:“3 AM”对是否固定? –

回答

0

这将帮助你填写你的字典中,你想要的结构:

NSArray *finalJSONArray = @[@"0",@"3",@"6",@"8"]; 
NSArray *timeArray  = @[@"12am",@"1am",@"2am",@"3am"]; 
NSArray *dayArray  = @[@"Sunday",@"Monday",@"Tuesday",@"Wednesday",@"Thursday"]; 

NSMutableDictionary *resultDic = [@{} mutableCopy]; 
for (NSString *day in dayArray) 
{ 
    resultDic[day] = [@{} mutableCopy]; 

    NSUInteger numOfObjects = MIN([finalJSONArray count], [timeArray count]); 
    for (int i = 0; i < numOfObjects; i++) 
    { 
     resultDic[day][finalJSONArray[i]] = timeArray[i]; 
    } 
} 
0

说,"0" : "12 AM", "3" : "1 AM", "6" : "2 AM", and "8" : "3 AM"双是固定的,下面将创建的NSDictionary,你可以转换成格式的JSON你想:

NSDictionary *hoursDict = @{@"0" : @"12am", 
          @"3" : @"1am", 
          @"6" : @"2am", 
          @"8" : @"3am"}; 

NSDictionary *hoursForDaysDict = @{@"Sunday" : hoursDict, 
            @"Monday" : hoursDict, 
            @"Tuesday" : hoursDict, 
            @"Wednesday" : hoursDict, 
            @"Thursday" : hoursDict}; 
0

试试这个

说,你有3个数组

NSArray *values = @[@"0",@"3",@"6",@"8"]; 
NSArray *times = @[@"12am",@"1am",@"2am",@"3am"]; 
NSArray *days = @[@"Sunday",@"Monday",@"Tuesday",@"Wednesday",@"Thursday"]; 

然后

NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] init]; 

for(NSString *day in days) { 

    NSMutableArray *valuePairArray = [[NSMutableArray alloc] init]; 
    NSInteger count = 0; 
    for (NSString *value in values) { 

     if ([times count] > count) { 

      NSDictionary *dataDict = @{value: times[count]}; 
      [valuePairArray addObject:dataDict]; 

     } 
     count++; 
    } 
    [finalDict setObject:valuePairArray forKey:day]; 
} 

NSLog(@"%@", finalDict); 

将该字典转换为JSON