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

這兩天一朋友問我一個解析數據問題,給我發(fā)了一下數據格式,我當時看了一眼覺得很簡單。于是自己通過其發(fā)給我的數據,通過造數據工具模擬請求,分分鐘搞定。后來實際操作項目才發(fā)現似乎有點毒。首先數據是加密返回的,需要解密,拿到解密的數據再做解析。

目錄
1.普通的字符串轉字典
2.解密之后的數據轉字典

首先我們先看一波普通的數據
一、普通的字符串轉字典
圖片.png

可以清楚的看到已經拿到數據了,接下來自己對數據進行模型化處理就可以了。但是如果遇上下面這數據情況就尷尬了,你會麻蛋,怎么差不多的數據結構為啥上面可以,下面不行。心里邊肯定有很多關于疑問的小九九。

** 接下來我們來看一下下面的這種數據的處理方式

二、解密之后的數據
圖片.png
圖片.png
圖片.png

首先采取跟上面一樣處理數據的方式,發(fā)現后臺打印報json解析失敗,解析失敗的話,那么dic里面自然而言也就為null

轉JSON, 拋出了"Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." "錯誤
根據報錯原因進行分析:

1.拋出的錯誤大致意思是說含有JSON轉換無法識別的字符
2.但是把此串打印輸出的JSON格式放到json中驗證又是沒問題的


圖片.png

3.蘋果自動生成的轉義字符也是斜杠,但是自動生成的是對稱的,而根據打印可以看出有些有的加了有的沒加,那么猜測毒源可能來源于此。

那么產生這種問題的緣由是為何呢

因為字符串是加密過的,導致解密后的數據加了一些 “操作符”

解決方案:

圖片.png

這時候我們回發(fā)現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;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明AI閱讀 16,236評論 3 119
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • 人生,若能在茫茫人海相遇,實屬不易;心若相知,就要珍藏。只是啊!風景再美,要有賞風景的心;情意再真,要用心去體會。...
    奢侈地幸福閱讀 960評論 0 0
  • 只能放下一張上下鋪的房間,一個人在蹲在廁所里,手拉著水龍頭撕聲竭力的在哪里吼。快一個月了每天都是面條只有鹽,...
    姜能偉閱讀 182評論 0 0
  • 我不敢說話 我不敢擁抱 不是心狠冷漠 只是怕控制不住自己的眼淚 傷感的話不說 靜靜的 悄悄的 然后離開
    黃土高坡上的風姑娘閱讀 202評論 0 0

友情鏈接更多精彩內容