decodedData
не ноль.Это значение: <1f8b0800 ...
1f8b
позвольте мне думать, что это GZip.
Любые шестнадцатеричные данные не конвертируются как таковые в строку с использованием кодировки UTF8.UTF8 не имеет значения для каждого возможного гекса.Есть недопустимая комбинация, поэтому ваша последняя строка равна нулю.Например, преобразуйте UIImage
в PNG HexData (используя UIImagePNGRepresentation()
) и попробуйте преобразовать его в NSString
, используя NSUTF8StringEncoding.Вы увидите.
Используя код https://github.com/nicklockwood/GZIP/ (первый, который я нашел):
NSData *unzippedData = [decodedData gunzippedData];
NSString *decodedString = [[NSString alloc] initWithData:unzippedData encoding:NSUTF8StringEncoding];
Вывод:
"MESSAGEID":"PgGCBnrKKsGuhqq_mm1gg","TIMESTAMP":"2019-03-12T12:53:05.3004826","TYPE":"UPDATE","users" : [{"userId":"8be21d1690bb46979a04b4e45a1ba625","insId":"20","operId":"30222e0b4b0e4df6b669c3cf69245422","itemUserId":15,"fName":"Aaron","lName":"Strickland","calendarId":0,"editTime":"2019-03-12T12:53:05.3815928","keyId":"ce71bc7ae3c145adad18a72e56cf0fab","projectId":"950710ab2b96413cbfd186141e147b3e","delFlag":0,"userPin":"123456"}],"keys" : [{"keyId":"ce71bc7ae3c145adad18a72e56cf0fab","projectId":"950710ab2b96413cbfd186141e147b3e","insId":"20","itemKeyId":15,"startTime":"2016-05-31T21:10:00","endTime":"2019-03-28T15:19:00","validateCount":13,"editTime":"2019-03-12T12:53:05.3815928","updateStatus":1,"delFlag":0,"calendarId":"b306db7e1f924fdebade3813dd596f5d"}]
Кажется почтикак JSON.Я бы добавил "{" и "}" вокруг него.
С небольшим количеством обходного пути:
NSMutableData *finalData = [[NSMutableData alloc] initWithData:[@"{" dataUsingEncoding:NSUTF8StringEncoding]];
[finalData appendData:unzippedData];
[finalData appendData:[@"}" dataUsingEncoding:NSUTF8StringEncoding]];
NSData *dictionary = [NSJSONSerialization JSONObjectWithData:finalData options:0 error:nil];
NSLog(@"dictionary: %@", dictionary);
Вам решать, почему синтаксис странный, но с этимВы "годный к употреблению" NSDictionary
.