ios网络请器之对象转json数据格式和json字符串转对象

2017-11-30  本文已影响0人  落枫猿

在网络请求中,有时会遇到这样一个需求

上传的格式: {
@"school":@"aaa",
@"family": @"bbb",
@"exes": [
{
@"name":@"张三",
@"age": @"20",
@"sex": @"1"
}
]
}

如果将这种格式的数据直接上传至服务器,那肯定是不行的,所以得将数据重新转换下格式,将对象转换为json格式,下面就是代码👇

    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    [dic setObject:@"张三" forKey:@"name"];
    [dic setObject:@"20" forKey:@"age"];
    [dic setObject:@"1" forKey:@"sex"];
 
 //创建一个数组出来,将dic装进去
   NSMutableArray *arr = [NSMutableArray array];
    [arr addObject:dic];

    NSError *error = nil;
   //将arr转换为data
    NSData *data = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
   //转化为字符串格式
    NSString *jsonStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

这时得到的"jsonStr",就是我们要上传至服务器的json对象.

  [NetWorkingManager postWithurl:@""  and
params:@{@"school":@"aaa",@"family":@"bbb",@"exes":jsonStr} 
  success:^(id response) {

    } error:^(NSError *error) {
        
    }];

到现在为止:数据就可以轻松上传至服务器了!!!!


还有一种就是从服务器获取到的数据格式是json字符串格式的,这时需要转换成字典类型的对象格式,下面是从服务器返回的数据格式👇

"BUSINESS_OUTARGS" = "{"order_id":"171130113608322250012","shop_id":"170915221839670250020"}"

这时就需要转换成我们熟悉的字典格式:👇

    NSString *jsonStr = dict[@"BUSINESS_OUTARGS"];
    NSError *err = nil;
       //先将字符串转换成data格式
        NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
      //再将data转成字典
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];

最后我们得到了想要的数据!!!!
就是这样beautifull.......

上一篇 下一篇

猜你喜欢

热点阅读