Проблемы с кодировкой IOS: JSON

У меня есть пример ответа JSON:

[
 [],
 { 
 "\u0000Data\u0000NewData": {
 "id": "40",
 "moreInfo": {
 "Info1": "sth1",
 "Info2": "sth2"
 }
 }
 }
 ]

И я хочу напечатать имя ключа:

NSString *text = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
 NSData *jsonData = [text dataUsingEncoding:NSUTF8StringEncoding];
 NSError *e;
 NSArray *dict = [NSJSONSerialization JSONObjectWithData:jsonData options: 0 error:&e];
 NSDictionary *temp = [dict objectAtIndex: 1];

 for(id key in temp) 
 NSLog(@" %@ --" , key); // Should print "DataNewData --"

Проблема в том, что работает только тогда, когда ключ выглядит как "DataNewData" (без\u0000), иначе он печатает пустую строку (даже без "-" в конце)

1 ответ

Можете ли вы проверить декодирование, выполненное в веб-службе этого ответа JSON. Он может не иметь надлежащего декодирования, или иногда он будет использовать другой формат декодирования или по умолчанию. Я думаю, что некоторые специальные символы или нулевой символ появляются там в данных JSON при кодировании вашего вывода службы. аналогичное кодирование для декодирования, используемого в вашей веб-службе, вы должны использовать здесь в своей строковой кодировке JSON.

т.е. если вы используете кодировку UTF-8 в разборе JSON, вы должны подтвердить, что в генерации вашего ответа службы используется JSON-кодирование и декодирование.

Я когда-нибудь сталкивался с подобной проблемой, но решил, удалив специальный символ из строки JSON легко, заменив пустые строки до синтаксического анализа...: -D, но это было неправильно, исправление кодировки и декодирования - правильный путь Я думаю, что для этой недействительной строки utf-8 JSON.

Может быть, некоторые из них вам помогут.. спасибо

"Я думаю, что вышеупомянутый JSON может также иметь некоторые проблемы. Я вижу, что неожиданные квадратные скобки закрыты без каких-либо данных. Соблюдайте эту проверку тоже... :-)"

licensed under cc by-sa 3.0 with attribution.