繁体   English   中英

序列化期间修改数据-C#-Json.Net

[英]Modify data during Serialization - C# - Json.Net

我在C#中有一个可序列化的类,如下所示

   namespace DataRequest
  {
   [Serializable]
  public class BaseData
    { 
    [JsonProperty(PropertyName = "u_additional_info")]
    public string DeskNumber { get; set; }
   }
  }

我正在从数据库中获取数据并映射到此类。

  1. DeskNumber将包含以下格式的数据

    格式1。

      <AdditionalInfo><Number>164</Number></AdditionalInfo> 

    FORMAT2

      AdditionalInfo><Code>GLW51</Code><Lang>GLW51</LangCode><TzCode>GLW51</TzCode></AdditionalInfo> 

    在序列化过程中,如果数据是从1开始的,则我需要返回标记下的值(即.164)。数字标记下的值在不同时间会有所不同,因此需要逻辑查找数字下的值。如果数据采用除格式以外的任何其他格式然后将“ Format1”返回为blank。

    要么

我可以在设置值而不是序列化期间应用逻辑

任何人都可以帮忙吗

使用以下代码,您将在数字标签下获得“值”。 resultMessage.Number包含所需的结果

string name = YourXmlNodes;

XmlSerializer serializer = new XmlSerializer(typeof(AdditionalInfo));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(name));
AdditionalInfo resultingMessage= (AdditionalInfo)serializer.Deserialize(memStream);


namespace ConsoleApplication1
    {
        [XmlRoot(ElementName = "AdditionalInfo")]
        public class AdditionalInfo
        {
            [XmlElement(ElementName = "Number")]
            public string Number { get; set; }
        }
    }

如果Format1Format2是在不同时间出现的相同文件内容,则可以将XmlContent序列化为该代码

尝试这个

        // Generic DeSerialization metod.
        public T DeSerialization<T>(string xmlStrig)  where T : class
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            using (StringReader sReader = new StringReader(xmlStrig))
            {
                return (T)xmlSerializer.Deserialize(sReader);
            }
        }

        // Accepted class
        [Serializable]    
        public class AdditionalInfo
        {
            [XmlElement]
            public string Number { get; set; }
        }

        // DeSerialize to Object code
        // if you have Xml-string you can send parameter XmlString directly
        // string xmlString = System.IO.File.ReadAllText(@"..\\XMLFile1.xml");
        AdditionalInfo ast = DeSerialization<AdditionalInfo>(yourXmlString);

您可以访问www.bilisim.io了解详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM