2012-02-28 29 views
1

我有一個傳統的Web服務,我想包裝一個新的MVC Web API,問題是我可以得到ASP.NET Web API來將我的XML轉換爲JSON嗎?Web API可以將XML轉換爲Json嗎?

我想過的一個想法是使用XDocument創建一個動態對象並返回該對象,但是當我用ExpandoObject嘗試它時不幸地它返回了一個帶有鍵/值對的json對象。

回答

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; 
    } 
} 
2

你可以。一種方法是將XML反序列化爲對象,然後再將它們序列化爲JSON。

更高效的(儘管更難代碼的方法)是編寫自己的xml到json的「轉錄器」,它讀入XML並吐出JSON。

請注意,並非所有的XML都可以簡單地表示爲JSON。

6

使用json.NET您可以輕鬆地做到這一點:

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

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

+0

是的,這是我最初的想法,但我希望這可以通過web api來完成,所以根據所使用的數據類型(xml或json),ApiController會返回右邊的forma t ... – nieve 2012-02-28 16:43:23

+1

Web API確實執行內容協商,這意味着它將返回最適合客戶想要獲得的表示。但是,它沒有內置的工具來直接將XML文檔轉換爲JSON表示。 – marcind 2012-02-28 17:15:55

相關問題