(don't ?)在c#中使用JavaScriptSerializer将xml文件(未知模式)转换为json
本文关键字:JavaScriptSerializer xml 文件 未知 json 转换 模式 don | 更新日期: 2023-09-27 18:02:47
JavascriptSerializer是将xml文件(未知模式)转换为json字符串的"工具"吗?
这里有一些线程处理如何在c#中将xml转换为json。以及一些推荐的专用解决方案(http://www.phdcc.com/xml2json.htm)但是在那些线程中总是有一个建议使用JavaScriptSerializer。但从来没有明确的解释如何做到这一点。人们总是避开它,或者从对象而不是xml开始。
说明一下:我不关心是否将xml转换为对象。如果可以的话,我宁愿避开它。XML => Json比XML => objects => Json更让我满意。
但是每个人都告诉不要重复使用JavaScriptSerializer。但我不觉得这是正确的选择。从xml中设置对象看起来是一项可怕的任务(强类型)。
我的问题是:
我应该继续使用http://www.phdcc.com/xml2json.htm
中描述的快速(但"脏")方法吗?或
我可以使用JavascriptSerializer,即使我不知道xml的模式?如果是,请填写空白/修改以下代码
namespace ExtensionMethods {
public static class JSONHelper
{
public static string ToJSON(this XmlDocument doc)
{
object obj = get_An_Object_From_My_XML_Without_Too_Much_Hassle_Like_Having_To_Deal_With_Strongly_Type(doc); // how to do that ???
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
}
}
using ExtensionMethods;
...
XmlDocument mydoc = new XmlDocument(@"c:'test.xml");
Response.write(mydoc.ToJSON());
我认为你可以使用json.net来接收一个未知的xml到json对象:
string xml = @"<?xml version=""1.0"" standalone=""no""?>
<root>
<person id=""1"">
<name>Alan</name>
<url>http://www.google.com</url>
</person>
<person id=""2"">
<name>Louis</name>
<url>http://www.yahoo.com</url>
</person>
</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc);
//{
// "?xml": {
// "@version": "1.0",
// "@standalone": "no"
// },
// "root": {
// "person": [
// {
// "@id": "1",
// "name": "Alan",
// "url": "http://www.google.com"
// },
// {
// "@id": "2",
// "name": "Louis",
// "url": "http://www.yahoo.com"
// }
// ]
// }
//}