美文网首页iOS 开发每天分享优质文章iOS开发技术当仓央嘉措遇上纳兰性德
iOS字符串转字典->字符串加密解密转成jso的梗(Err

iOS字符串转字典->字符串加密解密转成jso的梗(Err

作者: flowerflower | 来源:发表于2018-07-18 13:45 被阅读11次

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

    目录
    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;
    }
    

    相关文章

      网友评论

        本文标题:iOS字符串转字典->字符串加密解密转成jso的梗(Err

        本文链接:https://www.haomeiwen.com/subject/zbhopftx.html