一尘不染

反序列化时如何从json中删除k__BackingField

json

将xml文件序列化为.net c#对象后,在返回的json中获取k_BackingField。

我已经将DataContract和DataMember属性添加到.net c#对象,但是在json客户端上却什么也没得到。

[XmlRoot("person")]
[Serializable]
public class LinkedIn
{
    [XmlElement("id")]
    public string ID { get; set; }

    [XmlElement("industry")]
    public string Industry { get; set; }

    [XmlElement("first-name")]
    public string FirstName { get; set; }

    [XmlElement("last-name")]
    public string LastName { get; set; }
    [XmlElement("headline")]
}

返回的json的示例:

home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"

阅读 452

收藏
2020-07-27

共1个答案

一尘不染

如果可以在序列化中使用该类,则实际上不建议使用自动属性语法。支持字段是由编译器生成的,每次编译代码时都会不同。即使未对类进行任何更改(仅重新编译代码),这也可能导致不兼容问题。

我认为应用DataMember属性将解决这种情况下的问题。但是,如果需要在序列化中使用该类,我建议使用完整属性语法。

2020-07-27