1

我有一个旧的 Web 服务,我想用新的 MVC Web API 包装它,问题是我可以让 ASP.NET Web API 将我的 xml 转换为 json 吗?

我的一个想法是使用 XDocument 创建一个动态对象并返回它,但是当我使用 ExpandoObject 尝试它时,不幸的是它返回了一个带有键/值对的 json 对象。

4

5 回答 5

6

使用 json.NET 你可以轻松做到:

string result = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmldocument);

在http://james.newtonking.com/pages/json-net.aspx下载 Newtonsoft.Json

于 2012-02-28T16:23:33.393 回答
2

你可以。一种方法是将 XML 反序列化为对象,然后将它们再次序列化为 JSON。

一种更有效的(尽管更难编码的方法)是编写自己的 xml-to-json “转录器”,它读取 XML 并输出 JSON。

请注意,并非所有 XML 都可以轻松地表示为 JSON。

于 2012-02-28T16:15:36.253 回答
1

事实证明,这可以通过将 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;
   } 
}
于 2012-02-29T09:45:57.323 回答
0

在注册函数内的 WebApiConfig 文件中,最后添加以下代码(WebApiConfig 文件位于 App_Start 文件夹中)

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));
于 2019-03-22T09:59:30.933 回答
0
        config.Formatters.Remove(config.Formatters.XmlFormatter);
于 2020-03-27T18:41:03.197 回答