Я работаю над импортом файла из устаревшей кодовой базы C ++. Сам файл технически является JSON, но одно из значений обфусцируется функцией XOR в кодовой базе C ++ до его получения и выглядит примерно так:
{"version": 15, "data": "C\u0016Q45\u0010 46QY\\\u0011\n\u0019a\u0003\u0019}\u001apg"}
Значение для «данных» технически является строкой UTF8.
Я знаю алгоритм, используемый для декодирования этих данных в пригодную для использования строку JSON. Тем не менее, я не могу быстро разобрать это в [String: String], очевидно, из-за проблем с форматированием.
Error Domain=NSCocoaErrorDomain Code=3840 "Unable to convert data to string around character 31."
До сих пор мне удавалось получить конкретные данные, выделив подданные
let encryptedData = data.subdata(in: dataPrefixLength ..< dataLength - 2)
Тем не менее, я не могу быстро разобрать это в String, когда пытаюсь сделать это с кодировкой UTF8.
String(data: encryptedData, encoding: .utf8)
Стоит также отметить, что описание String в отладчике выглядит хорошо при проверке самих данных.
Буду очень признателен за любой совет.
Спасибо!