JsonConvert.DeserializeObject不解码特殊字符

时间:2019-04-07 08:31:08

标签: asp.net .net json c#-4.0 json.net

我目前正在序列化以下对象。

“记录”是一个字符串数组,其中包含特殊字符,例如>,<,&等

记录中的第一个索引是“ <”,这是一个xml特殊字符,并转换为“&lt”;通过SecurityElement.Escape(record [x]);。

之后,当我尝试使用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不会转换回“&lt”;

请帮助我解决这个问题。 预先感谢。

1 个答案:

答案 0 :(得分:0)

将json序列化为字典,然后对序列化后的键值对中的每个值进行序列化之前的操作。