仅在一个对象时将XML转换为Json数组
我目前正在使用Newtonsoft将一些xml转换为json以从RestExtension返回。
我的xml是以。的forms
name detail name detail
我把它转换为json使用
JsonConvert.SerializeXmlNode(xmldocument);
如果有多个项目,这可以正常工作。
我得到了这个 – json中的一个项目数组(这是我需要的):
{"Items":{"Item":[{"Name":"name","Detail":"detail"},{"Name":"name","Detail":"detail"}]}}
但是当只有一个时,可以理解的是这样转换(不是数组):
{"Items":{"Item":{"Name":"name","Detail":"detail"}}}
我正在阅读此内容的应用程序开发人员需要json返回一个项目数组,无论是否有一个或多个。
有没有办法欺骗它认为它是一个数组或者有人建议另一种方式这样做?
阅读有关Serialize Xml Node的文档
您可以通过这种方式强制使用JSON Array
var xml = @" -
name detail ";
DEMO
万一它可以帮助任何人,进一步meda的答复。 以下是使用XElement而不是xmlTextWriter和XDocument进行此操作的方法
XNamespace ns = "https://james.newtonking.com/projects/json"; var items = new XElement("items",new XAttribute(XNamespace.Xmlns+"json",ns)); items.Add(new XElement("item",new XAttribute(ns+"Array",true), new XElement("name", "name"), new XElement("Detail", "detail")));
然后转换它
XmlDocument doc = new XmlDocument(); doc.LoadXml(items.ToString()); var converted JsonConvert.SerializeXmlNode(doc);
Cinchoo ETL – 一个开源库,可用于将此类xml转换为预期的json格式
string xml = @" -
name detail "; StringBuilder sb = new StringBuilder(); using (var p = ChoXmlReader.LoadText(xml).WithXPath("/")) { using (var w = new ChoJSONWriter(sb) .Configure(c => c.SupportMultipleContent = true) ) w.Write(p); } Console.WriteLine(sb.ToString());
输出:
{ "Items": [ { "Name": "name", "Detail": "detail" } ] }
免责声明:我是这个图书馆的作者。
上述就是C#学习教程:仅在一个对象时将XML转换为Json数组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954142.html