1

我在使用 System.Web.Script.Serialization.JavaScriptSerializer 将对象序列化为 JSON 字符串时遇到了一些问题。每当我尝试这样做时,我的字符串都会自动进行 html 编码。有没有办法防止这种情况发生?如果可能的话,我真的很想避免使用外部库(代码适用于 .NET 4)。这是我的代码:

class Program
{
    static void Main(string[] args)
    {
        string myHtml = "<div class=\"blueBackground\">This is a really cool div:)</div>";
        int someOtherValue = 5;

        var jsonSerializer = new JavaScriptSerializer();

        string jsonObj = jsonSerializer.Serialize(new MyClass
        {
            StringProperty = myHtml,
            IntProperty = someOtherValue
        });

        Console.WriteLine(jsonObj);
        Console.ReadLine();
    }

    class MyClass
    {
        public string StringProperty { get; set; }
        public int IntProperty { get; set; }
    }
}

它输出字符串

{"StringProperty":"\u003cdiv class=\"blueBackground\"\u003e这是一个非常酷的 div:)\u003c/div\u003e","IntProperty":5}

谢谢!

4

1 回答 1

3

您的字符串不是 HTML 编码的。它们是 javascript 编码的。JSON 旨在由 javascript 解释器读取,并且您的输出是完全有效的 javascript,如本现场演示中所示。它是有效的 JSON,任何标准的 JSON 反序列化器都能够理解此输出并将其反序列化回原始字符串。所以没什么好担心的。

于 2012-04-30T21:34:10.440 回答