iOS字符串转字典->字符串加密解密转成jso的梗(Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end)

这两天一朋友问我一个解析数据问题,给我发了一下数据格式,我当时看了一眼觉得很简单。于是自己通过其发给我的数据,通过造数据工具模拟请求,分分钟搞定。后来实际操作项目才发现似乎有点毒。首先数据是加密返回的,需要解密,拿到解密的数据再做解析。

目录
1.普通的字符串转字典
2.解密之后的数据转字典

首先我们先看一波普通的数据
一、普通的字符串转字典
图片.png

可以清楚的看到已经拿到数据了,接下来自己对数据进行模型化处理就可以了。但是如果遇上下面这数据情况就尴尬了,你会麻蛋,怎么差不多的数据结构为啥上面可以,下面不行。心里边肯定有很多关于疑问的小九九。

** 接下来我们来看一下下面的这种数据的处理方式

二、解密之后的数据
图片.png
图片.png
图片.png

首先采取跟上面一样处理数据的方式,发现后台打印报json解析失败,解析失败的话,那么dic里面自然而言也就为null

转JSON, 抛出了"Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." "错误
根据报错原因进行分析:

1.抛出的错误大致意思是说含有JSON转换无法识别的字符
2.但是把此串打印输出的JSON格式放到json中验证又是没问题的


图片.png

3.苹果自动生成的转义字符也是斜杠,但是自动生成的是对称的,而根据打印可以看出有些有的加了有的没加,那么猜测毒源可能来源于此。

那么产生这种问题的缘由是为何呢

因为字符串是加密过的,导致解密后的数据加了一些 “操作符”

解决方案:

图片.png

这时候我们回发现dic里面有值了,那么接下来就是一些数据解析问题了。这波只能自己去偷偷去玩了
额外解释:

//所有控制符都会被替换成空字符。
NSString *messageText =[str stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
额外补充分类 NSString+HH

.h文件

- (id)toArrayOrNSDictionary;

.m文件

- (id)toArrayOrNSDictionary{
    if (![self isKindOfClass:[NSString class]]) {
        NSParameterAssert(@"self is not NSString!");
    }
    NSData *jsonData=[self dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error = nil;
    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData
                                                    options:NSJSONReadingAllowFragments
                                                      error:&error];
    if (jsonObject != nil && error == nil){
        return jsonObject;
    }
    if(error){
        NSLog(@"json解析失败:%@",error);
    }
    return nil;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,057评论 3 119
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139
  • 人生,若能在茫茫人海相遇,实属不易;心若相知,就要珍藏。只是啊!风景再美,要有赏风景的心;情意再真,要用心去体会。...
    奢侈地幸福阅读 4,377评论 0 0
  • 只能放下一张上下铺的房间,一个人在蹲在厕所里,手拉着水龙头撕声竭力的在哪里吼。快一个月了每天都是面条只有盐,...
    姜能伟阅读 1,328评论 0 0
  • 我不敢说话 我不敢拥抱 不是心狠冷漠 只是怕控制不住自己的眼泪 伤感的话不说 静静的 悄悄的 然后离开
    黄土高坡上的风姑娘阅读 1,396评论 0 0

友情链接更多精彩内容