2011-07-28 30 views
8

我可以XML序列化的JSON字符串是這樣的:如何序列化XML到JSON對象與Json.NET

var xml = new XmlDocument(); 
xml.LoadXml("<person><name>John</name></person>"); 
string jsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xml, Newtonsoft.Json.Formatting.None); 
Response.ContentType = "application/json"; 
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(jsonString)); 

這會給我:

"{\"person\":{\"name\":\"John\"}}" 

但我怎麼能連載它到一個JSON對象?就像這樣:

{"person":{"name":"John"}} 

回答

19

有時候我們只是想使它更難比它...

var xml = new XmlDocument(); 
xml.LoadXml("<person><name>John</name></person>"); 
Response.ContentType = "application/json"; 
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(xml)); 

我所做的是錯的XML序列化到一個字符串,然後再序列化。

+0

在我的情況下,我有一個wcf方法,我需要返回json字符串。 數據集> xml> json 但是當我轉換成json字符串比我遇到同樣的問題。 我的方法的簽名: [WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = 「?/ methosnamenamespoace查詢字符串」)] 串mthodname(參數); 如果在另一端獲得正確的json,我應該返回什麼。請指導。 –

+0

可以使用本地的.xml文件來代替Loadxml()中的xml字符串嗎? – cardiac7

+1

@ cardiac7是的,你可以使用任何'XmlDocument'。這個對象如何填充XML並不重要。 – Koopakiller

0

當你將訪問數據然後/自動不顯示。 我正在訪問AJAX post的HTML5幫助。 結果是顯示

在C#中的結果顯示, 「{\」 人\ 「:{\」 名稱\ 「:\」 約翰\ 「}}」

但在HTML5,它工作正常 {「person」:{「name」:「John」}}