【问题标题】:newtonsoft Serialize XML attributes issuesnewtonsoft 序列化 XML 属性问题
【发布时间】:2016-02-04 23:05:50
【问题描述】:

我在 json.net.. 的帮助下序列化 XML 文档。

一些 XML 元素具有属性,所以当我使用时:

JsonConvert.SerializeXNode(xml, Newtonsoft.Json.Formatting.None, true);

XML 元素<shipmentIndex Name="items">0</shipmentIndex>

转换为该 JSON: {"shipmentIndex":{"@Name":"items","#text":"0"}

我正在将此 JSON 发送到一个 API,该 API 需要这样的东西: {"shipmentIndex":0}

如何向 API 发送正确的数据?

  • 我使用属性来根据 API 要求格式化 JSON。

【问题讨论】:

    标签: c# xml json.net


    【解决方案1】:

    如果您的xml 变量是XElement 类型,您可以尝试使用它的RemoveAttributes 方法:

    var cleanXML = xml;
    cleanXML.RemoveAttributes();
    JsonConvert.SerializeXNode(cleanXML, Newtonsoft.Json.Formatting.None, true);
    

    【讨论】:

    • 是的,我正在使用XElement,但您建议的代码会导致错误The best overloaded method match for 'Newtonsoft.Json.JsonConvert.SerializeXNode(System.Xml.Linq.XObject, Newtonsoft.Json.Formatting, bool)' has some invalid arguments,`无法从'void'转换为'System.Xml.Linq.XObject'`
    • 我自己没有尝试过,但根据RemoveAttributes 的文档,这不应该发生。您确定您更改了代码以匹配我的编辑吗?
    • public void RemoveAttributes, SerializeXNode 期望 XObject 作为第一个参数
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多