IOS开发之把 JSON 数据转化成 Arrays 或者 Dictionaries
来源:互联网 发布:软件检测工程师 编辑:程序博客网 时间:2024/06/05 18:16
1 前言
通过 NSJSONSerialization 这个类的 JSONObjectWithData:options:error:方法来实现,把JSON 数据解析出来放在数据或者字典里面保存。
2 代码示例
TestDemo.m
[plain]
-(void)convseFromJson{
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setValue:@"Anthony" forKey:@"First Name"];
[dictionary setValue:@"Robbins" forKey:@"Last Name"];
[dictionary setValue:[NSNumber numberWithUnsignedInteger:51] forKey:@"Age"];
NSArray *arrayOfAnthonysChildren = [[NSArray alloc] initWithObjects:
@"Anthony's Son 1",
@"Anthony's Daughter 1",
@"Anthony's Son 2",
@"Anthony's Son 3",
@"Anthony's Daughter 2", nil];
[dictionary setValue:arrayOfAnthonysChildren forKey:@"children"];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
if ([jsonData length] > 0 && error == nil){
NSLog(@"Successfully serialized the dictionary into data.");
/* Json转数组/字典 */
error = nil;
//转换方法
id jsonObject = [NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments
error:&error];
if (jsonObject != nil && error == nil){
NSLog(@"Successfully deserialized...");
//如果jsonObject是字典类
if ([jsonObject isKindOfClass:[NSDictionary class]]){
NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;
NSLog(@"Dersialized JSON Dictionary = %@", deserializedDictionary);
}
//如果jsonObject是数组类
else if ([jsonObject isKindOfClass:[NSArray class]]){
NSArray *deserializedArray = (NSArray *)jsonObject;
NSLog(@"Dersialized JSON Array = %@", deserializedArray);
} else {
NSLog(@"I can't deal with it");
}
}
else if (error != nil){
NSLog(@"An error happened while deserializing the JSON data."); }
}
else if ([jsonData length] == 0 &&error == nil){
NSLog(@"No data was returned after serialization.");
}
else if (error != nil){
NSLog(@"An error happened = %@", error);
}
}
-(void)convseFromJson{
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setValue:@"Anthony" forKey:@"First Name"];
[dictionary setValue:@"Robbins" forKey:@"Last Name"];
[dictionary setValue:[NSNumber numberWithUnsignedInteger:51] forKey:@"Age"];
NSArray *arrayOfAnthonysChildren = [[NSArray alloc] initWithObjects:
@"Anthony's Son 1",
@"Anthony's Daughter 1",
@"Anthony's Son 2",
@"Anthony's Son 3",
@"Anthony's Daughter 2", nil];
[dictionary setValue:arrayOfAnthonysChildren forKey:@"children"];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
if ([jsonData length] > 0 && error == nil){
NSLog(@"Successfully serialized the dictionary into data.");
/* Json转数组/字典 */
error = nil;
//转换方法
id jsonObject = [NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments
error:&error];
if (jsonObject != nil && error == nil){
NSLog(@"Successfully deserialized...");
//如果jsonObject是字典类
if ([jsonObject isKindOfClass:[NSDictionary class]]){
NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;
NSLog(@"Dersialized JSON Dictionary = %@", deserializedDictionary);
}
//如果jsonObject是数组类
else if ([jsonObject isKindOfClass:[NSArray class]]){
NSArray *deserializedArray = (NSArray *)jsonObject;
NSLog(@"Dersialized JSON Array = %@", deserializedArray);
} else {
NSLog(@"I can't deal with it");
}
}
else if (error != nil){
NSLog(@"An error happened while deserializing the JSON data."); }
}
else if ([jsonData length] == 0 &&error == nil){
NSLog(@"No data was returned after serialization.");
}
else if (error != nil){
NSLog(@"An error happened = %@", error);
}
}
控制台结果
2013-05-13 17:26:15.726 FromJsonTest[4944:303] Successfully serialized the dictionary into data.
2013-05-13 17:26:15.728 FromJsonTest[4944:303] Successfully deserialized...
2013-05-13 17:26:15.728 FromJsonTest[4944:303] Dersialized JSON Dictionary = {
Age = 51;
"First Name" = Anthony;
"Last Name" = Robbins;
children = (
"Anthony's Son 1",
"Anthony's Daughter 1",
"Anthony's Son 2",
"Anthony's Son 3",
"Anthony's Daughter 2"
);
- IOS开发:把 JSON 数据转化成 Arrays 或者 Dictionaries
- IOS开发(75)之把 JSON 数据转化成 Arrays 或者 Dictionaries
- IOS开发之把 JSON 数据转化成 Arrays 或者 Dictionaries
- IOS开发 JSON 数据转化成 Arrays 或者 Dictionaries
- IOS学习之路十九(JSON与Arrays 或者 Dictionaries相互转换)
- IOS学习 JSON与Arrays 或者 Dictionaries相互转换
- 把 JSON 数据反序列化为 Arrays 和 Dictionaries
- IOS开发(74)之把 Array 和 Dictionaries 序列化成 JSON 对象
- IOS开发之把 Array 和 Dictionaries 序列化成 JSON 对象
- IOS开发之Json数据解析
- iOS开发之十六进制颜色数据转化为UIColor对象
- iOS开发之将字典NSDictionary转化为NSData数据
- ios json解析数据转化为中文
- IOS开发之JSON转PLIST(把存储json格式的文件转换成plist文件)
- 通过js把xml转化成json
- jquery把form转化成json对象
- ios 实现 Array 和 Dictionaries 序列化成 JSON 对象
- iOS-OC-把JSON字符串转化为字典
- mybatis 与 ehcache 整合
- VSS的配置和使用
- TextBox控件的使用,MaskedTextBox控件的使用
- 基于weibopy sina接口数据的设想与实现
- List、Set
- IOS开发之把 JSON 数据转化成 Arrays 或者 Dictionaries
- 黑马程序员--01 c#基础知识
- android ListView
- MDI窗体应用程序
- 在 Codeigniter(CI)中引入外部的JS与CSS的配置及使用
- 系统调用
- IOS开发之把 Array 和 Dictionaries 序列化成 JSON 对象
- Map、Collections、Arrays
- row_number rank dense_rank