【问题标题】:JsonConvert.SerializeXmlNode() add escape charactorJsonConvert.SerializeXmlNode() 添加转义字符
【发布时间】:2022-11-28 08:20:02
【问题描述】:

有一条 xml 消息:

<Data>
  <aa>12345\n67890</aa>
  <bb>98765\\4321<bb>
<Data>

我需要将 xml 转换为 json:

String strXmlData = xmlHelper.SelectSingleNode(xml,"//Data").OuterXML
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strJsonData);

String jsonData = JsonConvert.SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.None)

似乎 json 结果是由 JsonConvert 自动添加的转义字符。

{"aa":"12345\\n67890","bb":"98765\\\\4321"}

我需要保持原样的值(即,\n 作为新行而不是“\n”字符串)。有什么办法可以防止 JsonConvert 生成转义字符?或者是否有删除转义字符的建议?

任何建议表示赞赏,谢谢!

【问题讨论】:

    标签: c# json xml json.net jsonconvert


    【解决方案1】:

    我只能建议使用一些字符串函数(或 RegEx)

    String jsonData = JsonConvert
        .SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.None).Replace("\\","\");
    

    【讨论】:

      【解决方案2】:

      尝试将 XSLT 转换作为预处理步骤,以便在转换之前转换转义序列。

      根据我的经验,绝大多数 XML 到 JSON(反之亦然)的转换都需要一些自定义的预处理或后处理才能获得您想要的精确输出。就我个人而言,我通常发现在 XSLT 3.0 中“手动”进行转换更容易,这让您可以完全控制。

      【讨论】:

      • 谢谢你的建议,我们试试看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2018-01-21
      • 2015-12-06
      相关资源
      最近更新 更多