码迷,mamicode.com
首页 > Web开发 > 详细

Json.Net 序列化问题

时间:2015-01-15 21:48:04      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

    [DataContract]
    public class pcc
    {
        [DataMember]
        public string Name { get; set; }
    }

    public class ccc : pcc
    {
        public string cName { get; set; }
    }

 

由于  pcc 定义了 DataContract ,所以要求下面的所有属性要定义 DataMember 才能进行序列化。否则按 IgnoreDataMember 处理。

 

修改源码

类:JsonTypeReflector.GetObjectMemberSerialization   想办法让它返回  MemberSerialization.OptOut

 

类: DefaultContractResolver 增加字段

    public MemberSerialization DefaultMemberSerialization = MemberSerialization.OptIn;

 

 public static MemberSerialization GetObjectMemberSerialization(DefaultContractResolver resoler, Type objectType, bool ignoreSerializableAttribute)
    {
      JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);
      if (objectAttribute != null)
        return objectAttribute.MemberSerialization;

#if !PocketPC && !NET20
      DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
      if (dataContractAttribute != null)
      {
          return resoler.DefaultMemberSerialization;
      }
#endif

#if !(SILVERLIGHT || NETFX_CORE || PORTABLE)
      if (!ignoreSerializableAttribute)
      {
        SerializableAttribute serializableAttribute = GetSerializableAttribute(objectType);
        if (serializableAttribute != null)
          return MemberSerialization.Fields;
      }
#endif

      // the default
      return MemberSerialization.OptOut;
    }

 

初始化:

jSetting.ContractResolver = new DefaultContractResolver
{
DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.Public,
SerializeCompilerGeneratedMembers = true,
DefaultMemberSerialization = MemberSerialization.OptOut
};

 

Json.Net 序列化问题

标签:

原文地址:http://www.cnblogs.com/newsea/p/4227223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!