【IOS開發基礎系列】數據編解碼專題

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對象

http://itony.me/488.html

iOS:Terminating app due to uncaught exception'NSInvalidArgumentException', reason: 'Invalid type in JSON write(_NSInlineData)'

http://stackoverflow.com/questions/24984098/iosterminating-app-due-to-uncaught-exception-nsinvalidargumentexception-reas

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章