2013-04-17 11 views
6

Per un'applicazione voglio creare un JSON in formato come indicato di seguito,creando formato JSON in Objective C

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

Sto usando il seguente codice per creare lo stesso,

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 sto ottenendo il seguente formato,

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

}}

qualcuno potrebbe aiutarmi a creare il formato.

Grazie.

+0

si vuole ottenere l'output formato di cui sopra fisso destra ?? e passare questo valore JSON al server ?? –

+0

Sì Paras, voglio ottenere il formato corretto e passare il formato JSON. – user2071152

+0

Questo è sbagliato: '[grado setObject: gradedetails forKey: @" Grade1 "];' –

risposta

3

Dati obbligatori, è possibile ottenere in questo modo. Basta convertire quel perno dict in JSon o qualsiasi altro formato che si desidera. Rimuovi quella matrice, non ne hai bisogno, come hai menzionato nel formato richiesto.

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

Per ottenere il formato desiderato, è necessario raggruppare le informazioni in quel particolare formato.

Il tuo problema è proprio qui:

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

il formato desiderato non ha array, allora perché stai creando un array?

Un suggerimento per voi:

si dovrebbe essere la creazione di esattamente 4 dizionari, e non gli array.

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

Può ti aiuta.

3

dipende dal vostro codice:

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

controlla questo codice ... –

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

mi chiedo perché pochi developper utilizzare questa notazione