Escape-символы в JSON

Скачиваю страницу видео с рутуба и достаю из неё JSON. А там куча escape-символов, переносов строки и прочая хрень. Как это распарсить в Newtonsoft JSON?
Пример файла: {\\r\\n \\\"@context\\\" : \\\"http://schema.org\\\",\\r\\n \\\"@id\\\" : \\\" - Pastebin.com
И, чего-то, Replace() не работает :thinking:


            string t = File.ReadAllText("h:\\1.json");
            t = t.Replace("\\\\r\\\\n", "").Replace("\\\\", "");
            JObject j = JObject.Parse(t);

Ну через регулярку вначале привести к нормальному виду.
(\+r) заменить на человечий \r
ну и так далее для всех символов. а потом уже в парсер гнать.

это как?

Regex.Unescape(String) Method (System.Text.RegularExpressions)

string data = "";
            using (StreamReader strr = new StreamReader(new FileStream(@"C:\Users\Downloads\rc5aeC0u.txt", FileMode.Open, FileAccess.Read), Encoding.UTF8))
            {
                data = strr.ReadToEnd();
            }
             
            data = Regex.Replace(data, "\\\\+r", "\r");
            data = Regex.Replace(data, "\\\\+n", "\n");
            data = Regex.Replace(data, "\\\\+t", "\t");
            data = Regex.Replace(data, "\\\\+\"", "\"");

            using (StreamWriter strw = new StreamWriter(new FileStream(@"C:\Users\Downloads\rc5aeC0u_out.txt", FileMode.Create, FileAccess.Write), Encoding.Default))
            {
                strw.Write(data);
            }

Чо-та от этого строка никак не меняется :thinking:

            string t = File.ReadAllText("h:\\1.json");
            t = Regex.Unescape(t); //не меняется
            JObject j = JObject.Parse(t);

Ошибка

Вызвано исключение: "Newtonsoft.Json.JsonReaderException" в Newtonsoft.Json.dll
Необработанное исключение типа "Newtonsoft.Json.JsonReaderException" в Newtonsoft.Json.dll
Invalid property identifier character: \. Path '', line 1, position 1.

После этого выяснилось, что у них там JSON какой-то поломаный :dizzy_face: Это как так вообще? :confusedparrot: Или это я криво скопипастил? :thinking: Ну-ка ща ещё раз :point_up:

Ну может быть где то надо убрать лишние кавычки. Надо предметно посмотреть и посчитать слеши и догадаться что они обозначают.

Короче. Если копировать из этого окна


то вижуалка добавляет кучу эскейпов. Если начать их убирать, то JSON может сломаться.
А в оригинале там всё норм.

Ничего она не добавляет. Просто символ переноса каретки отображается как \r
Если нажать просмотр то он покажет правильно.

Но он всё-равно не парсится, вот с такой ошибкой:

Вызвано исключение: "Newtonsoft.Json.JsonReaderException" в Newtonsoft.Json.dll
Необработанное исключение типа "Newtonsoft.Json.JsonReaderException" в Newtonsoft.Json.dll
Bad JSON escape sequence: \x. Path 'video.entities.cef16f69b228bd7d1019cc6479ca92e2.video.html', line 1, position 13623.

ему теперь эта фигня не нравится:

                    "html": "\x3ciframe width\x3d\"720\" height\x3d\"405\" src\x3d\"https://rutube.ru/play/embed/8152538\" frameborder\x3d\"0\" webkitAllowFullScreen mozallowfullscreen allowfullscreen allow\x3d\"encrypted-media\"\x3e\x3c/iframe\x3e",

Кстати, через полуофициальное (скрытое) API эта строчка выглядит так:

  "html": "<iframe width=\"720\" height=\"405\" src=\"https://rutube.ru/embed/8152538\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowfullscreen allow=\"encrypted-media\"></iframe>",

и парсится нормально. Но там они даты-время не завезли :man_shrugging:

Это же тоже символ. Можно также организовать поиск через регулярку и заменить на соответствующий символ с этим кодом.