且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何从XML在C#解析为JSON时避免了根元素

更新时间:2023-11-25 09:34:10

JSON.Net有一个 SerializeXmlNode()方法,可以做的正是你想要的。简单地传递给 omitRootObject 参数。 注意:

 字符串xmlPerson = @"<PersonDefinition><Person><name>Nicolas</name><age>22</age></Person><Person><name>Pankaj</name><age>25</age></Person></PersonDefinition>";
XmlDocument的docPerson =新的XmlDocument();
docPerson.LoadXml(xmlPerson);
JSON字符串= JsonConvert.SerializeXmlNode(docPerson,Formatting.None,真正的);
Console.WriteLine(JSON);
 

输出:

  {人:[{名:尼古拉,时代:22},{名:潘卡,时代: 25}]}
 

I am trying to create a JSON from an xml using JSON.NET

XmlDocument docPerson = new XmlDocument();
docPerson.LoadXml(xmlPerson); //xmlPerson is the xml from above
JObject personDefinition = JObject.Parse(JsonConvert.SerializeObject(docPerson));
Tasks.personDefinition = personDefinition["personDefinition"];

OUTPUT JSON

"person":{"person":[{"personId":"1","firstName":"Name1","lastName":"lastName1"},                  {"personId":"3","firstName":"Name2","lastName":"lastName2"}]}

I don't need the outer person and just need the following json

REQUIRED JSON

"person":[{"personId":"1","firstName":"1","lastName":"Weight"},{"personId":"3","firstName":"4","lastName":"Pulse Ox"}]}

I have tried using the .first method however it is throwing an error. Can anyone suggest on how to strip the root from the output json

JSON.Net has a SerializeXmlNode() method that can do exactly what you want. Simply pass true to the omitRootObject parameter. Observe:

string xmlPerson = @"<PersonDefinition><Person><name>Nicolas</name><age>22</age></Person><Person><name>Pankaj</name><age>25</age></Person></PersonDefinition>";
XmlDocument docPerson = new XmlDocument();
docPerson.LoadXml(xmlPerson);
string json = JsonConvert.SerializeXmlNode(docPerson, Formatting.None, true);
Console.WriteLine(json);

Output:

{"Person":[{"name":"Nicolas","age":"22"},{"name":"Pankaj","age":"25"}]}