1 Base64
1.1 在iOS7中系統提供了base64的轉碼方式
示例如下:
NSData* originData = [originStr dataUsingEncoding: NSASCIIStringEncoding];
NSString* encodeResult = [originData base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
NSLog(@"encodeResult:%@",encodeResult);
NSData* decodeData = [[NSData alloc] initWithBase64EncodedString: encodeResult options:0];
NSString* decodeStr = [[NSString alloc] initWithData: decodeData encoding: NSASCIIStringEncoding];
1.2 iOS使用開源庫GTMBase64轉碼
/**
*GTM 轉碼
*/
- (void)GTMEncodeTest
{
NSString* originStr = @"Man";
NSString* encodeResult = nil;
NSData* originData = [originStr dataUsingEncoding: NSUTF8StringEncoding];
NSData* encodeData = [GTMBase64 encodeData: originData];
encodeResult = [[NSString alloc] initWithData: encodeData encoding: NSUTF8StringEncoding];
NSLog(@"%@",encodeResult);
}
/**
* GTM 解碼
*/
- (void)GMTDecodeTest
{
NSString* encodeStr = @"TWFu";
NSString* decodeResult = nil;
NSData* encodeData = [encodeStr dataUsingEncoding: NSUTF8StringEncoding];
NSData* decodeData = [GTMBase64 decodeData: encodeData];
decodeResult = [[NSString alloc] initWithData: decodeData encoding: NSUTF8StringEncoding];
NSLog(@"%@",decodeResult);
}
2 JSON
2.1 JSON與NSDictionary互相轉換
2.1.1 NSDictionary轉換爲NSString
- (NSString*) DataTOjsonString: (id)object
{
NSString*jsonString = nil;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject: object options: NSJSONWritingPrettyPrinted error: &error];
// Pass 0 if you don't care about the readability of the generated string
if (! jsonData) {
NSLog(@"Got an error: %@", error);
}else{
jsonString= [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];
}
return jsonString;
}
注意:
此時轉換成的字符串中,每個鍵值對之間會預留一個回車換行符,導致http傳輸時會出錯,因此如果要用於http網絡傳輸時,需要手動將回車符替換掉!!!
jsonString = [jsonString stringByReplacingOccurrencesOfString: @"\n" withString:@""];
2.1.2 將JSON串轉化爲NSDictionary或NSArray
// 將JSON串轉化爲字典或者數組
- (id)toArrayOrNSDictionary: (NSData*)jsonData{
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingAllowFragments error: &error];
if (jsonObject != nil && error == nil){
return jsonObject;
}else{
// 解析錯誤
return nil;
}
}
3 參考鏈接
iOS Base64轉碼(使用ios7系統自帶編碼庫 和GMTBase64兩種方式)
http://www.2cto.com/kf/201405/297303.html
[譯]iOS7:使用Base64編解碼NSData和NSString對象
iOS:Terminating app due to uncaught exception'NSInvalidArgumentException', reason: 'Invalid type in JSON write(_NSInlineData)'
NSDictionary to jsonString ||對象轉json格式
http://www.cnblogs.com/qingjoin/p/3437036.html
將NSString轉換成UTF8編碼的NSString
http://blog.csdn.net/a6472953/article/details/8163016
NSJSONSerialization-JSON數據與NSDictionary和NSArray之間的轉化
http://blog.csdn.net/xyxjn/article/details/17224733