使用JavaScriptSerializer将序列化为JSON的麻烦

时间:2012-04-30 21:27:10

标签: .net asp.net-mvc-3 javascriptserializer

使用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}

谢谢!

1 个答案:

答案 0 :(得分:3)

您的字符串不是HTML编码的。它们是javascript编码的。 JSON旨在由javascript解释器读取,您的输出是完全有效的javascript,如this live demo中所示。它是有效的JSON,任何标准的JSON反序列化器都能够理解这个输出并将其反序列化回原始字符串。所以无需担心。