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

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

目錄
1.普通的字符串轉(zhuǎn)字典
2.解密之后的數(shù)據(jù)轉(zhuǎn)字典

首先我們先看一波普通的數(shù)據(jù)
一、普通的字符串轉(zhuǎn)字典
圖片.png

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

** 接下來我們來看一下下面的這種數(shù)據(jù)的處理方式

二、解密之后的數(shù)據(jù)
圖片.png
圖片.png
圖片.png

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

轉(zhuǎn)JSON, 拋出了"Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." "錯誤
根據(jù)報錯原因進(jìn)行分析:

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


圖片.png

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

那么產(chǎn)生這種問題的緣由是為何呢

因為字符串是加密過的,導(dǎo)致解密后的數(shù)據(jù)加了一些 “操作符”

解決方案:

圖片.png

這時候我們回發(fā)現(xiàn)dic里面有值了,那么接下來就是一些數(shù)據(jù)解析問題了。這波只能自己去偷偷去玩了
額外解釋:

//所有控制符都會被替換成空字符。
NSString *messageText =[str stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];
額外補(bǔ)充分類 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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容