在Objective C中创建JSON格式

对于一个应用程序,我想以下面提到的格式创建一个JSON,

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

我得到以下格式,

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

}}

有人可以帮我创建格式。

谢谢。

所需数据,您可以这样做。 只需转换JSon中的stud dict或任何其他您想要的格式。 删除该arrays,您不需要它,正如您所提到的那样以所需格式。

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

取决于您的代码:

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

我想知道为什么很少有开发者使用这种表示法

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

为了获得您想要的格式,您必须以该特定格式打包信息。

你的问题是对的:

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

所需的格式没有数组,那你为什么要创建一个数组呢?

给你的提示:

您应该正好创建4个字典,而不是数组。

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

它可能会帮助你。

Interesting Posts