在C#中如何编码XML以在页面的JavaScript部分中将其输出到JSON内部

我有一个上传KML文件的处理程序,并返回带有KML文件作为属性的JSON:

context.Response.Write("{\"name\":\"" + FileName + "\",\"type\":\"" + FileType + "\",\"size\":\"" + FileSize + "\",\"region_id\":\"" + regionID + "\",\"kml\":\"" + HttpUtility.HtmlEncode(xmlData) + "\"}"); 

正如您所看到的,我正在尝试使用HttpUtility.HtmlEncode对KML进行编码,但我的响应中出现错误:

未捕获的exception:无效的JSON

如何在C#中对XML / KML文件进行属性编码,以便稍后在JavaScript中对其进行解码?

编辑#1:根据Cheeso的评论我在IIS 7.5 Windows 7上使用ASP.NET,.NET版本4.我的处理程序是一个ashx文件。 如果我从响应中HttpUtility.HtmlEncode(xmlData) KML数据( HttpUtility.HtmlEncode(xmlData) ),则响应正常。

编辑#2我也尝试根据主持人的评论使用System.Web.Script.Serialization.JavaScriptSerializer 。 我这样使用它:

 System.Web.Script.Serialization.JavaScriptSerializer serializer; context.Response.Write("{\"name\":\"" + FileName + "\",\"type\":\"" + FileType + "\",\"size\":\"" + FileSize + "\",\"region_id\":\"" + regionID + "\",\"kml\":\"" + serializer.Serialize(xmlData) + "\"}"); 

我仍然得到相同的“无效JSON”错误。

HTML编码器编码< as < 等等。 这无助于您将XML转换为JSON格式。 你想要的是一个JavaScript编码。 使用HttpUtility.JavaScriptStringEncode

http://msdn.microsoft.com/en-us/library/dd991914.aspx

你想构建JSON,对……显然我建议使用JSON序列化器是荒谬的….

 string FileName = "foo.txt", FileType = "csv"; int FileSize = 1134, regionID = 12; string xml = ""; string json= new JavaScriptSerializer().Serialize(new { name = FileName, type = FileType, size = FileSize, region_id = regionID, kml = xml }); 

在大多数情况下,使用预先封装的序列化器对于数据的边缘情况更方便且更健壮。