簡體   English   中英

將NSString轉換為NSDictionary錯誤

[英]Convert NSString to NSDictionary bug

我有一個來自服務器的字符串,當我嘗試將其轉換為NSDictionary ,我得到“ nil ”。 當我嘗試自己編寫相同的NSString -沒關系!

我從服務器編碼的字符串中獲取,然后使用NSString + AESCrypt.h中的“ AES256DecryptWithKey”進行解密,並獲取NSString,將此字符串轉換為NSData,然后嘗試獲取NSDictionary

NSString *str = @"{\"error\":{\"password\":[\"Error wrong!\"]}}"; //string written by myself

NSData *jsonData = [str dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData
                                                         options:kNilOptions
                                                           error:&error];

此代碼有效,但隨后我從服務器獲取了此字符串-不是(

NSData日志(來自服務器的消息)-<7b226572 726f7222 3a7b2270 61737377 6f726422 3a5b22d0 9dd0b5d0 bfd180d0 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920 656d6169 6c20d0b8d1dd2b

NSData日志(我的字符串)-<7b226572 726f7222 3a7b2270 61737377 6f726422 3a5b22d0 9dd0b5d0 bfd180d0 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920 656d6169 6c20d0b8 8d0bbd0b8 7d0bbd0180

如果我來自服務器的NSLog字符串,則它-{“錯誤”:{“密碼”:[“錯誤錯誤!”]}},字符串不帶“ \\”

然后我“ po&error.localizedDescription”-錯誤:請求的屬性表達式的地址錯誤:1個錯誤的解析表達式

然后我“ po error.localizedDescription”-錯誤的打印描述:錯誤域= NSCocoaErrorDomain代碼= 3840“操作無法完成。(可可錯誤3840。)”(結尾處為垃圾。)UserInfo = 0x7f9940497550 {NSDebugDescription = Garbage最后。}

可以是什么?

錯誤消息顯示:

垃圾結束。

因此,將您的數據與來自服務器的數據進行比較,我們看到:

Test string data:
<7b226572 726f7222 3a7b2270 61737377
 6f726422 3a5b22d0 9dd0b5d0 bfd180d0
 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920
 656d6169 6c20d0b8 d0bbd0b8 20d0bfd0
 b0d180d0 bed0bbd1 8c225d7d 7d>

Server data:
<7b226572 726f7222 3a7b2270 61737377
 6f726422 3a5b22d0 9dd0b5d0 bfd180d0
 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920
 656d6169 6c20d0b8 d0bbd0b8 20d0bfd0
 b0d180d0 bed0bbd1 8c225d7d 7d000000>

解碼后的數據長3個字節。 可能是由於某些填充參數而在加密之前或由於解密而填充的。 作為解決方法,您可以刪除雜散000000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM