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

时间:2017-02-24 12:13:38

标签: c# .net json serialization json.net

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

iOS7

我从数据库中获取数据并映射到此类。我有要求

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

    格式1。

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

    格式2

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

    在序列化期间,如果数据是第一个,我需要在标签下返回值(即.164)。数字标签下的值在不同的时间会有所不同。因此需要在数字标签下的逻辑查找值。如果数据在任何其他格式1和#34;以外的格式;然后将其作为空白返回。

  2. 我可以应用逻辑,即使它在设置值而非序列化期间

    任何人都可以帮忙吗

2 个答案:

答案 0 :(得分:0)

使用以下代码,您将在Number Tag下获得Value。 resulMessage.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; }
        }
    }

答案 1 :(得分:0)

  

如果 Format1 Format2 是相同的文件内容   你可以快速地序列化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了解详细信息