iOS平臺原生提供了JSON解析的支持,可以方便地將JSON格式的數據轉換成Objective-C對象或反之。iOS使用NSJSONSerialization類進行JSON解析。
//定義JSON字符串 NSString *jsonString = @"{\"name\":\"張三\",\"age\":20}"; //將JSON字符串轉化為NSData類型數據 NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; //解析JSON數據,轉換成Objective-C對象 NSError *error; NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; //從JSON字典中獲取數據 NSString *name = jsonDict[@"name"]; NSInteger age = [jsonDict[@"age"] integerValue];
上述代碼展示了如何使用NSJSONSerialization類將JSON格式的字符串轉化為Objective-C對象。其中,使用dataUsingEncoding方法將JSON字符串轉化為NSData類型數據,而JSONObjectWithData方法則會將該NSData類型數據解析成NSDictionary對象。這里提供了NSJSONReadingMutableContainers解析選項,使其在解析過程中可以被修改,以滿足某些需求。
NSJSONSerialization還提供了從Objective-C對象生成JSON格式數據的可靠方法。iOS中,JSON格式數據可以使用NSString或NSData類型來存儲。為了將Objective-C對象轉化為JSON格式數據,需要使用NSJSONSerialization的類方法dataWithJSONObject:options:error:,這個方法會將Objective-C對象轉化為NSData類型數據。
//定義Objective-C對象 NSDictionary *dataDict = @{@"name":@"張三",@"age":@20}; //將Objective-C對象轉化為JSON格式數據 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dataDict options:NSJSONWritingPrettyPrinted error:&error]; //將JSON格式數據轉化為字符串 NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
上述代碼展示了如何將Objective-C對象轉化為JSON格式數據。使用dataWithJSONObject方法將數據字典轉換成NSData類型數據。NSJSONWritingPrettyPrinted解析選項可以使得輸出的JSON數據更易讀。
NSJSONSerialization類不僅提供了JSON的解析和生成功能,還提供了判斷數據是否符合JSON規范的方法isValidJSONObject:。如果傳入的是有效的JSON對象,該方法則返回YES,否則返回NO。