C#序列化JSON加轉(zhuǎn)義
在.NET開發(fā)中,將對(duì)象序列化成JSON是一項(xiàng)常見任務(wù)。當(dāng)對(duì)象中的字符串屬性包含特殊字符時(shí),我們需要對(duì)這些特殊字符進(jìn)行轉(zhuǎn)義。本文介紹如何通過C#代碼實(shí)現(xiàn)JSON序列化并自動(dòng)轉(zhuǎn)義特殊字符。
using System; using System.Web.Script.Serialization; public class Person { public string Name { get; set; } public string Address { get; set; } } public class Program { static void Main(string[] args) { Person person = new Person { Name = "John", Address = "123 Main St, Anytown\"USA\"" }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = serializer.Serialize(person); Console.WriteLine(json); } }
在上述代碼中,我們創(chuàng)建了一個(gè)名為Person的簡(jiǎn)單類,并在Main方法中創(chuàng)建了一個(gè)Person對(duì)象。 Person對(duì)象的Address屬性包含雙引號(hào)和反斜杠等特殊字符。
我們使用.NET Framework提供的JavaScriptSerializer類將Person對(duì)象序列化為JSON字符串。由于Address屬性中包含特殊字符,JavaScriptSerializer會(huì)自動(dòng)對(duì)字符串進(jìn)行轉(zhuǎn)義。
運(yùn)行上述代碼后,輸出結(jié)果如下所示:
{"Name":"John","Address":"123 Main St, Anytown\"USA\""}
正如我們所看到的,JSON字符串中Address屬性中的雙引號(hào)和反斜杠已經(jīng)被轉(zhuǎn)義為“\”。
在C#中,使用JavaScriptSerializer類的Serialize方法序列化對(duì)象時(shí),會(huì)自動(dòng)對(duì)字符串進(jìn)行轉(zhuǎn)義。如果您需要自己手動(dòng)轉(zhuǎn)義特殊字符,則可以使用.NET Framework中提供的Escape方法:
string originalString = "This is a \"test\" string."; string escapedString = System.Uri.EscapeDataString(originalString);
上述代碼使用了.NET Framework提供的EscapeDataString方法將字符串originalString中的特殊字符轉(zhuǎn)義,并將轉(zhuǎn)義后的字符串存儲(chǔ)在變量escapedString中。