JsonConvert.DeserializeObject не декодирует специальный символ - PullRequest
0 голосов
/ 07 апреля 2019

В настоящее время я сериализую объект, подобный приведенному ниже.

"запись" - это массив строк, в котором есть специальный символ, например>, <, & etc </p>

Первый индекс взапись - «<», это специальный символ xml, который преобразуется в «<»;by SecurityElement.Escape (record [x]);. </p>

После этого, когда я пытаюсь его избежать, используется HttpUtility.JavaScriptStringEncode, который преобразуется в \ u0026lt.

var result = new Dictionary<string, string>();
string[] record = { "<", ">", "John & James" };
            for (int x = 0; x < record.Length; x++)
            {
                string xmlEscaped = SecurityElement.Escape(record[x]); 
                result.Add($"F{235}_{"Property"}{x + 1}", HttpUtility.JavaScriptStringEncode(xmlEscaped));
            }
string json= JsonConvert.SerializeObject(result);

и результатиз json является

{"F235_Property1": "\ u0026lt;", "F235_Property2": "\ u0026gt;", "F235_Property3": "John \ u0026amp; James"}

Когда ядесериализовать тот же самый json, я использую

var jsonConverted = JsonConvert.DeserializeObject(json);

Но после десериализации преобразованные специальные символы не преобразуются обратно в исходные.Пример - \ u0026lt не преобразует обратно в "<"; </p>

Пожалуйста, помогите мне решить эту проблему.Заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2019

Десериализуйте ваш json в словарь и отмените каждое действие, которое вы делаете перед сериализацией, для каждого значения в парах ключ-значение после.

...