1. 程式人生 > >Json 與 NSDictionary 或 NSArray 互轉

Json 與 NSDictionary 或 NSArray 互轉

字典轉 JSON 

- (NSString *) JsonString:(NSDictionary *)dic

{

    NSString *dicStr = [self dictionaryToJson:dic];

    dicStr = [dicStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

/* 有些服務端規定 需要去掉空格 ”\“ 換行符等

    dicStr = [dicStr stringByReplacingOccurrencesOfString:@" " withString:@""];

    dicStr = [dicStr stringByReplacingOccurrencesOfString:@"\n" withString:@""];

    dicStr = [dicStr stringByReplacingOccurrencesOfString:@"\\" withString:@""];

    dicStr = [dicStr stringByReplacingOccurrencesOfString:@"\r" withString:@""];

*/

    string = dicStr;

    return string;

}

- (NSString*)dictionaryToJson:(NSDictionary *)dic

{

    NSError *parseError = nil;

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrintederror:&parseError];

    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

}

JSON 轉 字典 或者 陣列

NSArray * ArrayWithJsonString(NSString* jsonString)

{

    if (jsonString == nil) {

        return nil;

    }

    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

    NSError *err;

//陣列 或者字典

    NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData

                                                        options:NSJSONReadingMutableContainers

                                                          error:&err];

    if(err) {

        NSLog(@"json解析失敗:%@",err);

        return nil;

    }

    return array;

}