使用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}
谢谢!
答案 0 :(得分:3)
您的字符串不是HTML编码的。它们是javascript编码的。 JSON旨在由javascript解释器读取,您的输出是完全有效的javascript,如this live demo中所示。它是有效的JSON,任何标准的JSON反序列化器都能够理解这个输出并将其反序列化回原始字符串。所以无需担心。