Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Web API可以将XML转换为Json吗?_Asp.net_Wcf Web Api_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

Asp.net Web API可以将XML转换为Json吗?

Asp.net Web API可以将XML转换为Json吗?,asp.net,wcf-web-api,asp.net-mvc-4,asp.net-web-api,Asp.net,Wcf Web Api,Asp.net Mvc 4,Asp.net Web Api,我有一个遗留的web服务,我想用一个新的MVC web API来包装它,问题是我能用ASP.NET web API将xml转换成json吗 我的一个想法是使用XDocument创建一个动态对象并返回该对象,但当我尝试使用ExpandooObject时,不幸的是,它返回了一个带有键/值对的json对象。可以。一种方法是将XML反序列化为对象,然后再次序列化为JSON 一种更有效但更难编码的方法是将自己的xml编写成json转录器,读入xml并输出json 请注意,并非所有XML都可以轻松地表示为J

我有一个遗留的web服务,我想用一个新的MVC web API来包装它,问题是我能用ASP.NET web API将xml转换成json吗


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

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

一种更有效但更难编码的方法是将自己的xml编写成json转录器,读入xml并输出json


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

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

一种更有效但更难编码的方法是将自己的xml编写成json转录器,读入xml并输出json


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

使用JSON.NET,您可以轻松地做到:

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

使用Json.NET在

下载Newtonsoft.Json您可以轻松完成:

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

下载Newtonsoft.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;
   } 
}

事实证明,这可以通过将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;
   } 
}

在WebApiConfig file In Register函数中添加以下代码,最后WebApiConfig文件位于App_Start文件夹中

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));

在WebApiConfig file In Register函数中添加以下代码,最后WebApiConfig文件位于App_Start文件夹中

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));

是的,这是我最初的想法,但我希望这可以通过web api实现,这样根据使用的xml或json数据类型,ApiController将返回正确的格式…web api确实执行内容协商,这意味着它将返回最适合客户机想要得到的表示。但是,它没有一个内置的工具来直接将XML文档转换为JSON表示。是的,这是我最初的想法,但我希望这可以通过web api实现,因此,根据使用的xml或json数据类型,ApiController将返回正确的格式…Web API确实执行内容协商,这意味着它将返回最适合客户机想要得到的表示。但是,它没有内置功能,无法将XML文档直接转换为JSON表示。请不要只发布代码作为答案,还要解释代码的作用以及如何解决问题。带有解释的答案通常质量更高,并且更有可能吸引更多的选票。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。