我有一个遗留的Web服务,我想用新的MVC Web API包装,问题是我可以使用ASP.NET Web API将我的xml转换为json吗?
我的想法是使用XDocument来创建一个动态对象并返回它,但是当我尝试使用ExpandoObject时,遗憾的是它返回了一个带有键/值对的json对象。
使用json.NET,您可以轻松完成:
string result = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmldocument);
在http://james.newtonking.com/pages/json-net.aspx下载Newtonsoft.Json
你可以。一种方法是将XML反序列化为对象,然后再将它们序列化为JSON。
更有效(虽然更难编写代码的方法)是编写自己的xml-to-json“transcriber”,它读取XML并吐出JSON。
请注意,并非所有XML都可以像JSON一样轻松表示。
事实证明,这可以通过将XDocument转换为如此粗略的动态JsonObject来完成:
var doc = XDocument.Load(uri);
foreach (var node in doc.Root.Descendants()) {
var obj = (dynamic) new JsonObject();
foreach (var child in node.Descendants())
{
obj[child.Name.LocalName] = child.Value;
yield return obj;
}
}
在Register函数内的WebApiConfig文件中,最后添加以下代码(WebApiConfig文件位于App_Start文件夹中)
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));