2013-04-17 3 views
6

Для приложения я хочу создать JSON в формате, как указано ниже,создания формата JSON в Objective C

"Students" : { 
    "results": { 
     "Grade1": { 
      "studentresult": "pass", 
      "marksheet": "provided" 
     }, 
     "ID": 01, 
     "Name": "Student1", 
    } 
} 

Я использую следующий код для создания такой же,

NSMutableDictionary *gradedetails = [[NSMutableDictionary alloc] init]; 
[gradedetails setObject:@"pass" forKey:@"studentresult"]; 
[gradedetails setObject:@"provided" forKey:@"marksheet"]; 

NSMutableDictionary *sdetails = [[NSMutableDictionary alloc] init]; 
[sdetails setObject:@"01" forKey:@"ID"]; 
[sdetails setObject:@"Name" forKey:@"Student1"]; 

NSMutableDictionary *grade = [[NSMutableDictionary alloc] init]; 
[grade setObject:gradedetails forKey:@"Grade1"]; 

NSMutableArray *rarray = [[NSMutableArray alloc] init]; 
[rarray addObject:grade]; 
[rarray addObject:sdetails]; 

NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; 
[results setObject:rarray forKey:@"results"]; 

NSMutableDictionary *stud = [[NSMutableDictionary alloc] init]; 
[stud setObject:rdic forKey:@"Students"]; 

NSData *jsondata = [NSJSONSerialization dataWithJSONObject:stud options:NSJSONWritingPrettyPrinted error:&error]; 

I я получаю в следующем формате,

"Students" : { 
"results" : [ 
    { 
    "Grade1" : { 
     "studentresult" : "pass", 
     "marksheet" : "provided" 
    } 
    }, 
    { 
    "ID" : "01", 
    "Name" : "Student1" 
    } 
] 

}}

Может кто-то, пожалуйста, помогите мне в создании формата.

Спасибо.

+0

вы хотите получить выше фиксированный формат вывода право ?? и передать это значение json серверу? –

+0

Да Paras, я хочу, чтобы формат был правильным и передал формат json. – user2071152

+0

Это неверно: '[grade setObject: gradedetails forKey: @" Grade1 "];' –

ответ

3

Обязательные данные. Вы можете получить этот путь. Просто конвертируйте этот тигр в JSon или любой другой формат, который вы хотите. Удалите этот массив, вам это не нужно, поскольку вы упомянули его в требуемом формате.

NSMutableDictionary *gradedetails = [[NSMutableDictionary alloc] init]; 
[gradedetails setObject:@"pass" forKey:@"studentresult"]; 
[gradedetails setObject:@"provided" forKey:@"marksheet"]; 

NSMutableDictionary *sdetails = [[NSMutableDictionary alloc] init]; 
[sdetails setObject:@"01" forKey:@"ID"]; 
[sdetails setObject:@"Name" forKey:@"Student1"]; 
[sdetails setObject:gradedetails forKey:@"Grade1"]; 

NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; 
[results setObject:sdetails forKey:@"results"]; 

NSMutableDictionary *stud = [[NSMutableDictionary alloc] init]; 
[stud setObject:results forKey:@"Students"]; 

NSLog(@"Required Format Data is %@",stud); 
0

Чтобы получить желаемый формат, вам необходимо упаковать информацию в этом конкретном формате.

Ваша проблема правы здесь:

NSMutableArray *rarray = [[NSMutableArray alloc] init]; 
[rarray addObject:grade]; 
[rarray addObject:sdetails]; 

Требуемый формат не имеет массивов, так почему вы создаете массив?

Подсказка для вас:

Вы должны создать ровно 4 словарей, и никаких массивов.

0
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
NSMutableDictionary *result = [[NSMutableDictionary alloc] init]; 
NSMutableDictionary *grade = [[NSMutableDictionary alloc] init]; 
[grade setValue:@"pass" forKey:@"studentresult"]; 
[grade setValue:@"provided" forKey:@"marksheet"]; 
[result setValue:grade forKey:@"Grade1"]; 
[result setValue:@"01" forKey:@"ID"]; 
[result setValue:@"Student1" forKey:@"Name"]; 
[dict setValue:result forKey:@"results"]; 

NSMutableDictionary *stdnt = [[NSMutableDictionary alloc] init]; 
[stdnt setValue:dict forKey:@"Students"]; 
NSError *error = nil; 
NSData *jsondata = [NSJSONSerialization dataWithJSONObject:stdnt options:NSJSONWritingPrettyPrinted error:&error]; 

NSString *s = [[NSString alloc] initWithData:jsondata encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",s); 

Это может поможет.

3

Зависит от вашего кода:

NSMutableDictionary *gradedetails = [[NSMutableDictionary alloc] init]; 
[gradedetails setObject:@"pass" forKey:@"studentresult"]; 
[gradedetails setObject:@"provided" forKey:@"marksheet"]; 

NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; 
[results setObject:gradedetails forKey:@"Grade1"]; 
[results setObject:@"01" forKey:@"ID"]; 
[results setObject:@"Name" forKey:@"Student1"]; 

NSMutableDictionary *stud = [[NSMutableDictionary alloc] init]; 
[stud setObject:results forKey:@"Students"]; 
1
check this code- 
    NSMutableDictionary *students=[NSJSONSerialization JSONObjectWithData:webData  options:0 error:nil]; 
     for (NSDictionary *dictionofstudents in students) 
     { 
      NSMutableDictionary *results=[dictionofstudents objectForKey:@"results"]; 
      for (NSDictionary *dictionofresults in results) 
      { 
       NSMutableDictionary *grade1=[dictionofresults objectForKey:@"Grade1"]; 
       for (NSDictionary *dictionofgrade1 in grade1) 
       { 
        NSString *studentresult=[dictionofgrade1 objectForKey:@"studentresult"]; 
        NSString *marksheet=[dictionofgrade1 objectForKey:@"marksheet"]; 
        [arrayofstudentresult addObject:studentresult]; 
        [arrayofmarksheet addObject:marksheet]; 
       } 
       NSString *ID=[dictionofresults objectForKey:@"ID"]; 
       NSString *name=[dictionofresults objectForKey:@"Name"]; 
       [arrayofID addObject:ID]; 
       [arrayofname addObject:name]; 
      } 
     } 
+0

проверить этот код ... –

2
NSDictionary *gradedetails = @{@"studentresult" : @"pass", @"marksheet" : @"provided"}; 
NSDictionary *grade = @{ @"Grade1" : gradedetails} 
NSDictionary *sdetails = @{@"ID" : @"01", @"Student1" : @"Name"}; 
NSArray *resultsArray = @[grade, sdetails]; 
NSDictionary *results= @{@"results" : resultsArray}; 
NSDictionary *stud = @{@"Students" : results}; 

NSData *jsondata = [NSJSONSerialization dataWithJSONObject:stud options:NSJSONWritingPrettyPrinted error:&error]; 

Интересно, почему некоторые developper использовать это обозначение