在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
你想构建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 });
在大多数情况下,使用预先封装的序列化器对于数据的边缘情况更方便且更健壮。