[英]Convert NSString to NSDictionary and NSDictionary to NSString
[英]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.