Может ли Web API конвертировать XML в Json? - PullRequest
1 голос
/ 28 февраля 2012

У меня есть устаревший веб-сервис, который я хотел бы обернуть новым веб-API MVC, вопрос в том, могу ли я получить веб-API ASP.NET для преобразования моего xml в json?

У меня была мысль использовать XDocument для создания динамического объекта и его возврата, но когда я попробовал его с ExpandoObject, к сожалению, он возвратил объект json с парами ключ / значение.

Ответы [ 4 ]

6 голосов
/ 28 февраля 2012

Используя json.NET, вы можете сделать это легко:

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

Скачать Newtonsoft.Json на http://james.newtonking.com/pages/json-net.aspx

2 голосов
/ 28 февраля 2012

Вы могли бы.Один из способов сделать это - десериализовать XML в объекты и затем снова сериализовать их в JSON.

Более эффективным (хотя и сложнее в кодировании) будет написать свой собственный xml-to-json "transcriber ", который читает в XML и выплевывает JSON.

Просто отметьте, что не весь XML может быть легко представлен в виде JSON.

1 голос
/ 29 февраля 2012

Оказывается, это можно сделать, преобразовав 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;
   } 
}
0 голосов
/ 22 марта 2019

В файле WebApiConfig внутри функции Register добавьте, наконец, приведенный ниже код (файл WebApiConfig находится в папке App_Start)

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