Проблемы с кодировкой 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.