以下代碼都有詳細的註釋說明這些類型之間的轉換(如有錯誤的地方還望批評指出,謝謝!)
- (void)viewDidLoad {
[super viewDidLoad];
/**
* NSDictionary ||NSArray(NSMutableArray) ==>> NSData ==>> NSString (Json):
*/
// NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
// @"balance", @"key",
// @"remaining balance", @"label",
// @"45", @"value",
// @"USD", @"currencyCode",nil];
NSArray *params = @[@"balance", @"key",
@"remaining balance", @"label",
@"45", @"value",
@"USD", @"currencyCode"];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString;
if ([jsonData length] > 0 && error == nil){
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"%@",jsonString);
}else{
NSLog(@"Erroe:%@",error);
}
/**
* NSString (Json): ==>>NSData ==>> NSDictionary ||NSArray(NSMutableArray)
*/
//將NSString轉化爲NSData
NSData *jsonData2 = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error2 = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData2 options:kNilOptions error:nil];
if (jsonObject != nil && error2 == nil){
NSLog(@"jsonObject == %@",jsonObject);
}else{
// 解析錯誤
NSLog(@"Erroe:%@",error2);
}
/**
NSData -> NSString
:returns: NSString
*/
// NSString *tempStr = [[NSString alloc] initWithData:<#(NSData *)#> encoding:<#(NSStringEncoding)#>];
/**
NSString -> NSData
*/
// NSData *tempData = [[[NSString alloc]init] dataUsingEncoding:<#(NSStringEncoding)#>]
}