2015-06-25 2 views
0

У меня есть строка с сервера, и когда я пытаюсь преобразовать ее в NSDictionary - я получаю «nil». Когда я пытаюсь написать один и тот же NSString сам - все в порядке!Преобразование NSString в ошибку NSDictionary

я получаю от сервера закодированные строки, то я использую «AES256DecryptWithKey» от NSString + AESCrypt.h расшифровать и получить 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 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 строка с сервера, это - { "ошибка": { "пароль": [ "ошибка неправильно!"]}}, строка без "\"

Тогда я "Ро & error.localizedDescription" - ошибка: адрес выражения собственности просил ошибки: 1 ошибки синтаксического анализа выражения

Затем i "po error.lo calizedDescription "- Распечатка описания ошибки: Ошибка домена = NSCocoaErrorDomain Code = 3840« Операция не может быть выполнена. (Cocoa ошибка 3840.)»(Garbage в конце.) UserInfo = 0x7f9940497550 {NSDebugDescription = Garbage в конце.}

Что это может быть ??

ответ

0

сообщение об ошибке говорит:

Garbage at end.

Таким образом, сравнивая данные и данные с сервера, мы видим:

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.

+0

Как я могу удалить это 000000? – Nubaslon

+0

'[NSData dataWithBytes: [jsonData bytes] length: [jsonData length] - 3]' – Mats

+1

Вам лучше не вставлять его в первую очередь. :) – Eiko

Смежные вопросы