c# – 从XML转换为JSON时更改属性值

c# – 从XML转换为JSON时更改属性值,第1张

概述在一个项目中,我使用TSQL FOR XML从DB获取一些数据.在所有表中,Date字段的minimun值设置为01/01/1900. 那是因为空值不允许作为一个无法改变的内部政治. 使用xml结果我需要将其转换为JSON并将其序列化为客户端. 为此,我正在使用: string jSonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xm 在一个项目中,我使用Tsql FOR XML从DB获取一些数据.在所有表中,Date字段的minimun值设置为01/01/1900.

那是因为空值不允许作为一个无法改变的内部政治.

使用xml结果我需要将其转换为JSON并将其序列化为客户端.

为此,我正在使用:

string JsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,Newtonsoft.Json.Formatting.None,true);

好;现在我需要将每个01/01/1900日期转换为DateTime.MinValue(01/01/0001),同时转换为JsON;我怎么处理这个?

解决方法 UPDATE – 修改后的代码,适用于任何值为01/01/1900的节点/属性.

我会在转换为JsON之前处理XML文档.如果您的日期值是节点或属性值,这是linqPad示例.由于我不知道你的XML数据结构只是简单的例子:

voID Main(){    // IF IT IS NODE VALUE    var xml = @"<data>        <objectA>            <dateValueA>01/01/1900</dateValueA>            <dateValueB>01/01/1971</dateValueB>        </objectA>        <objectB>            <dateValueA>01/01/2002</dateValueA>            <dateValueB>01/01/1900</dateValueB>            <dateValueZ>01/01/2011</dateValueZ>        </objectB>        <objectC>            <dateValueA>01/01/1910</dateValueA>            <dateValueB>01/01/2012</dateValueB>            <dateValueC>01/01/1900</dateValueC>        </objectC>    </data>";    var xmlDoc = new Xmldocument();    xmlDoc.LoadXml(xml);    var nodes = xmlDoc.SelectNodes("//*[text()='01/01/1900']");    foreach(XmlNode node in nodes)    {        node.InnerText = "01/01/0001";    }    string JsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true);    "// IF IT IS NODE VALUE - RESulTS".Dump();    JsonString.Dump();    // IF IT IS ATTRIBUTE VALUE    var xmlAttr = @"<data>        <objectA dateValueA='01/01/1900' dateValueB='01/01/1900' dateValueC='01/01/2011' />        <objectB dateValueB='01/01/2011' someOtherDate='01/01/1900' />        <objectC dateValueC='01/01/1900' dontChangeThisDate='05/04/1923' />    </data>";    var xmlDocAttr = new Xmldocument();    xmlDoc.LoadXml(xmlAttr);    var nodesAttr = xmlDoc.SelectNodes("//*[@*='01/01/1900']");    for(var i=0; i < nodesAttr.Count; i++)    {        foreach(XmlAttribute attrib in nodesAttr[i].Attributes)        {            if (attrib.Value == "01/01/1900")            {                attrib.Value = "01/01/0001";            }        }    }    string JsonStringAttr = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true);    "// IF IT IS ATTRIBUTE VALUE - RESulTS".Dump();    JsonStringAttr.Dump();}

结果:

// IF IT IS NODE VALUE - RESulTS{"objectA":{"dateValueA":"01/01/0001","dateValueB":"01/01/1971"},"objectB":{"dateValueA":"01/01/2002","dateValueB":"01/01/0001","dateValueZ":"01/01/2011"},"objectC":{"dateValueA":"01/01/1910","dateValueB":"01/01/2012","dateValueC":"01/01/0001"}}// IF IT IS ATTRIBUTE VALUE - RESulTS{"objectA":{"@dateValueA":"01/01/0001","@dateValueB":"01/01/0001","@dateValueC":"01/01/2011"},"objectB":{"@dateValueB":"01/01/2011","@someOtherDate":"01/01/0001"},"objectC":{"@dateValueC":"01/01/0001","@dontChangeThisDate":"05/04/1923"}}

这对你有用吗?

总结

以上是内存溢出为你收集整理的c# – 从XML转换为JSON时更改属性值全部内容,希望文章能够帮你解决c# – 从XML转换为JSON时更改属性值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231330.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存