在将xml文件序列化为.net c#对象后,我将在返回的json中获取k_BackingField。
我已经向.net c#对象添加了DataContract和DataMember属性,但是在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"
发布于 2012-10-23 09:27:52
如果类可以在序列化中使用,则实际上不推荐使用自动属性语法。原因是支持字段是由编译器生成的,每次编译代码时,该字段可能会不同。即使没有对类进行任何更改(只是重新编译代码),这也会导致不兼容问题。
我认为在这种情况下应用DataMember属性可以解决这个问题。但是,如果类需要在序列化中使用,我建议使用完整的属性语法。
发布于 2015-01-06 18:09:54
从您的类中删除[Serializable]
发布于 2016-02-27 03:11:11
默认WebApi序列化程序会将"__BackingField:“语法添加到c#自动属性中。将此代码添加到App_Start中的WebConfig中,以获得您可能正在寻找的外观更整洁的json。
using Newtonsoft.Json;
...
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
https://stackoverflow.com/questions/13022198
复制相似问题