creating JSON format in Objective C

后端 未结 6 436
感动是毒
感动是毒 2020-12-10 07:19

For an application i want to create a JSON in format as mentioned below,

\"Students\" : {
    \"results\": {
        \"Grade1\": {
            \"studentresul         


        
相关标签:
6条回答
  • 2020-12-10 07:57

    Required Data , You can get this way . Just convert that stud dict in JSon or any other format you want. Remove that array , You don't need it , As you mentioned it in the required format.

    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 讨论(0)
  • 2020-12-10 07:59

    In order to get the format you want out of it, you have to pack information in that particular format.

    Your problem is right about here:

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

    The desired format has no arrays, so why are you creating an array?

    A hint for you:

    You should be creating exactly 4 dictionaries, and no arrays.

    0 讨论(0)
  • 2020-12-10 08:00
    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);
    

    It may helps you.

    0 讨论(0)
  • 2020-12-10 08:05
    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];
    

    I wonder why few developper use this notation

    0 讨论(0)
  • 2020-12-10 08:11
        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 讨论(0)
  • 2020-12-10 08:13

    Depends on your code:

    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"];
    
    0 讨论(0)
提交回复
热议问题