我有一个来自服务器的字符串,当我尝试将其转换为nil
时 - 我得到“NSString
”。当我尝试自己编写同样的NSString *str = @"{\"error\":{\"password\":[\"Error wrong!\"]}}"; //string written by myself
NSData *jsonData = [str dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData
options:kNilOptions
error:&error];
时 - 没关系!
我从服务器编码的字符串中获取,然后我使用来自NSString + AESCrypt.h的“AES256DecryptWithKey”来解密,并获取NSString,这个字符串我转换为NSData,然后尝试获取NSDictionary
Appium.back
此代码有效,但后来我从服务器获取此字符串 - 而不是(
NSData的日志(从服务器消息) - < 7b226572 726f7222 3a7b2270 61737377 6f726422 3a5b22d0 9dd0b5d0 bfd180d0 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920 656d6169 6c20d0b8 d0bbd0b8 20d0bfd0 b0d180d0 bed0bbd1 8c225d7d 7d000000>
NSData日志(我的字符串) - < 7b226572 726f7222 3a7b2270 61737377 6f726422 3a5b22d0 9dd0b5d0 bfd180d0 b0d0b2d0 b8d0bbd1 8cd0bdd1 8bd0b920 656d6169 6c20d0b8 d0bbd0b8 20d0bfd0 b0d180d0 bed0bbd1 8c225d7d 7d>
如果我来自服务器的NSLog字符串,它 - {“错误”:{“密码”:[“错误错误!”]}},字符串没有“\”
然后我“po& error.localizedDescription” - 错误:请求的属性表达式的地址 错误:解析表达式时出错1个
然后我“po error.localizedDescription” - 打印错误描述: 错误域= NSCocoaErrorDomain代码= 3840“操作无法完成。(可可错误3840。)”(垃圾结束。)UserInfo = 0x7f9940497550 {NSDebugDescription =垃圾结束。}
它可以是什么?
答案 0 :(得分:0)
错误消息显示:
最后垃圾。
因此,比较您的数据和服务器上的数据,我们看到:
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
。