creating JSON format in Objective C

10,900

Solution 1

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);

Solution 2

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"];

Solution 3

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

Solution 4

    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];
           }
      }
Share:
10,900
user2071152
Author by

user2071152

Updated on June 04, 2022

Comments

  • user2071152
    user2071152 almost 2 years

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

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

    I am using the following code to create the same,

    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 am getting in the following format,

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

    } }

    could someone please help me in creating the format.

    Thanks.