在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);
它可能会帮助你。