首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在反序列化时从json中移除k__BackingField

如何在反序列化时从json中移除k__BackingField
EN

Stack Overflow用户
提问于 2012-10-23 09:04:28
回答 11查看 69.3K关注 0票数 112

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

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

代码语言:javascript
复制
[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示例:

代码语言:javascript
复制
home: Object
<FirstName>k__BackingField: "Storefront"
<LastName>k__BackingField: "Doors"
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-10-23 09:27:52

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

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

票数 47
EN

Stack Overflow用户

发布于 2015-01-06 18:09:54

从您的类中删除[Serializable]

票数 113
EN

Stack Overflow用户

发布于 2016-02-27 03:11:11

默认WebApi序列化程序会将"__BackingField:“语法添加到c#自动属性中。将此代码添加到App_Start中的WebConfig中,以获得您可能正在寻找的外观更整洁的json。

代码语言:javascript
复制
using Newtonsoft.Json;
...

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
票数 64
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13022198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档