为什么我的JSON结果集中的公共属性的下划线前缀

时间:2011-09-14 15:27:11

标签: wcf json serializable

我使用ASP.NET WCF通过jquery调用以JSON格式返回.NET对象。 当我将.NET类更改为serializable时,我通过WCF类中的方法公开,对象属性名称突然改变为:

名称为_Name。

因此,我访问json对象的javascript类中的所有代码都是错误的。

为什么属性现在有下划线前缀? 如何在不删除类的serializable属性的情况下将其更改回来?

感谢。 基督教

1 个答案:

答案 0 :(得分:4)

当您说“将类更改为可序列化”时,是否表示您在其上添加了[Serializable]属性?如果是这种情况:标记有该属性的类将所有字段序列化(无属性)。在下面的示例中,此类没有任何属性,并且它具有无参数构造函数,因此它被视为“POCO”(普通旧CLR对象)类型。 POCO类型将其公共成员(字段或属性)序列化。如果用[Serializable]装饰它,那么它将属于可序列化规则。

为什么需要使用[Serializable]标记您的类型?如果您确实需要这样做(对于某些旧版序列化程序),您还可以使用[DataContract][DataMember]属性来装饰您的类型,这些属性受WCF序列化程序的尊重。您需要在类型上添加[DataContract],并在要序列化的属性上添加[DataMember]。

public class Person
{
    private string _Name;
    private int _Age;

    public string Name {
        get { return this._Name; }
        set { this._Name = value; }
    }

    public string Age {
        get { return this._Age; }
        set { this._Age = value; }
    }
}