簡體   English   中英

將 883812976388 數據序列化為 json 時忽略命名空間屬性

[英]Ignore namespace attributes while serializing xml data to json

我正在嘗試使用JsonSerializer()將 xml 直接序列化為 json,但是命名空間屬性被添加為最終 json 中的字段。關於如何刪除它的任何建議? 我嘗試使用JsonConvert.Serialize()但序列化的 json 中缺少一些子節點。

解決您的問題的方法可能是先將 object 反序列化為字典。 這樣您就可以在轉換之間添加一些邏輯。

檢查下面的例子:

            var xml = @"<?xml version='1.0' standalone='no'?>
            <root>
              <person id='1'>
                <name>Alan</name>
                <url>http://www.google.com</url>
              </person>
              <person id='2'>
                <name>Louis</name>
                <url>http://www.yahoo.com</url>
              </person>
            </root>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            var childNodeList = doc.DocumentElement.ChildNodes;

            for (int i = 0; i < childNodeList.Count; i++)
            {
                var nodes = childNodeList.Item(i).ChildNodes;

                var dict = new Dictionary<string, object>();

                foreach (XmlNode node in nodes)
                {
                    var serializedNode = JsonConvert.SerializeXmlNode(node);

                    var prop = JsonConvert.DeserializeObject<IDictionary<string, object>>(serializedNode).FirstOrDefault();

                    dict.Add(prop.Key, prop.Value ?? " ");
                }

                Console.WriteLine($"item {i}");
                Console.WriteLine(string.Join("\r\n", dict.Select(e => $"{e.Key}: {e.Value}")));
            }

Output:

     //item 0
     //name: Alan
     //url: http://www.google.com
     //item 1
     //name: Louis
     //url: http://www.yahoo.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM