[英]Modify data during Serialization - C# - Json.Net
我在C#中有一个可序列化的类,如下所示
namespace DataRequest
{
[Serializable]
public class BaseData
{
[JsonProperty(PropertyName = "u_additional_info")]
public string DeskNumber { get; set; }
}
}
我正在从数据库中获取数据并映射到此类。
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; }
}
}
如果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了解详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.