我试图将JSON输出转换为XML。不幸的是我得到这个错误:
JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。
这就是我到目前为止所创建的。
string url = string.Format("https://graph.facebook.com/{0}?fields=posts.fields(message)&access_token={1}", user_name, access_token); HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); jsonOutput = reader.ReadToEnd(); Console.WriteLine("THIS IS JSON OUTPUT: " + jsonOutput); } XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonOutput); Console.WriteLine(doc);
这是我的JSON输出:
{"id":"108013515952807","posts":{"data":[{"id":"108013515952807_470186843068804","created_time":"2013-05-14T20:43:28+0000"},{"message":"TEKST","id":"108013515952807_470178529736302","created_time":"2013-05-14T20:22:07+0000"}
我怎么解决这个问题?
尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的XML:
var doc = JsonConvert.DeserializeXmlNode(jsonOutput, "root");
编辑:为了打印出带有缩进的XML,您可以使用命名空间中的XDocument类System.Xml.Linq:XDocument.Parse(doc.InnerXml)。
XDocument
System.Xml.Linq
XDocument.Parse(doc.InnerXml)