ios 关于后台返回16进制数据的转化

本文介绍iOS中处理后台返回的16进制数据的方法。包括通过Unicode编码转换少量数据,以及针对大量数据采用重写分类或利用NSJSONSerialization进行转换的方式,并确保输出数据能在第三方工具中正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ios 关于后台返回16进制数据的转化

一、如果是少量数据,可以转化为uicode编码,这时候已经不影响对数据进行处理

NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:nil];

二、如果数据量过大,有两种方式,需要直观的看到json的层级结构,

1.重写分类,

#import <Foundation/Foundation.h>
    @implementation NSDictionary (Log)
    - (NSString *)descriptionWithLocale:(id)locale
    {
     NSMutableString *string = [NSMutableString string];
    // 开头有个{
    [string appendString:@"{\n"];
    // 遍历所有的键值对
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        [string appendFormat:@"\t%@", key];
        [string appendString:@" : "];
        [string appendFormat:@"%@,\n", obj];
    }];

    // 结尾有个}
    [string appendString:@"}"];

    // 查找最后一个逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];

    return string;
    }
    @end

    @implementation NSArray (Log)

    - (NSString *)descriptionWithLocale:(id)locale
    {
    NSMutableString *string = [NSMutableString string];

    // 开头有个[
    [string appendString:@"[\n"];

    // 遍历所有的元素
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [string appendFormat:@"\t%@,\n", obj];
    }];

    // 结尾有个]
    [string appendString:@"]"];

    // 查找最后一个逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];

    return string;
    }

    @end

将分类拖入工程中,使用

    NSDictionary *responseDic = [NSJSONSerialization     JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:nil];

转化为uicode编码后,可直接输出正常的层级结构,但是此时输出的不是真正的json,所以输出的数据在第三方解析工具中不能识别

2.如果需要在第三方解析工具中使用数据,

如果需要在第三方解析工具中使用数据

       NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:nil];
        NSData * data  = [NSJSONSerialization dataWithJSONObject:responseDic options:(NSJSONWritingOptions)0 error:nil];
        NSString * daetr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"responseDic%@",daetr);

转载于:https://www.cnblogs.com/BigerThanBiger/p/6610993.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值