2013-04-17 6 views
6

Für eine Anwendung, ich möchte ein JSON in Format erstellen, wie unten erwähnt,Schaffung JSON-Format in Objective C

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

ich den folgenden Code bin mit dem gleichen erstellen,

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 in folgendem Format am bekommen,

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

} }

könnte jemand bitte helfen Sie mir bei der Erstellung des Formats.

Danke.

+0

Sie rechts oben festes Format Ausgabe erhalten ?? und übergeben Sie diesen JSON-Wert an Server ?? –

+0

Ja Paras, ich möchte das Format korrekt und das JSON-Format übergeben. – user2071152

+0

Das ist falsch: '[grade setObject: gradedetails forKey: @" Note1 "];' –

Antwort

3

Erforderliche Daten, Sie können diesen Weg bekommen. Konvertieren Sie dieses Stud-Dict einfach in JSon oder einem anderen gewünschten Format. Entfernen Sie das Array, Sie brauchen es nicht, wie Sie es im erforderlichen Format erwähnt haben.

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

Um das gewünschte Format zu erhalten, müssen Sie Informationen in diesem speziellen Format packen.

Ihr Problem ist recht hier:

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

Das gewünschte Format keine Arrays hat, also warum schaffen Sie ein Array?

Ein Tipp für Sie:

Sie sollten genau 4 Wörterbücher und keine Arrays werden zu schaffen.

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

Es hilft Ihnen kann.

3

Abhängig von Ihrem 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"]; 
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

überprüfen Sie diesen Code ... –

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

Ich frage mich, warum einige developper diese Notation verwenden