示例#1
0
 private void WriteAttributedMember(string itemName, object value, JSonMemberAttribute attr)
 {
     if (attr == null || !attr.SkipWhenNull || (attr.SkipWhenNull && value != null))
     {
         WriteMember(attr == null || string.IsNullOrEmpty(attr.Name) ? itemName : attr.Name);
         WriteEmbeddedValue(value);
     }
 }
示例#2
0
        private void WriteAttributedObject(object o, Type oType, JSonSerializableAttribute jsonAttribute)
        {
            if (o == null)
            {
                throw new ArgumentNullException("o");
            }
            if (oType == null)
            {
                throw new ArgumentNullException("oType");
            }
            if (jsonAttribute == null)
            {
                throw new ArgumentNullException("jsonAttribute");
            }

            // get members that will be serialized:
#if WINDOWS_STORE
            IEnumerable <FieldInfo>    fieldMembers    = ReflectionHelper.GetFields(oType);
            IEnumerable <PropertyInfo> propertyMembers = ReflectionHelper.GetProperties(oType);
#else
            IEnumerable <FieldInfo>    fieldMembers    = ReflectionHelper.GetFields(oType, jsonAttribute.Flags);
            IEnumerable <PropertyInfo> propertyMembers = ReflectionHelper.GetProperties(oType, jsonAttribute.Flags);
#endif

            WriteObjectBegin();

            // serialize all fields:
            foreach (FieldInfo f in fieldMembers)
            {
                if (!f.IsLiteral)
                {
                    JSonMemberAttribute attr = ReflectionHelper.GetCustomAttribute <JSonMemberAttribute>(f);
                    if (attr != null || jsonAttribute.AllowAllFields)
                    {
                        WriteAttributedMember(f.Name, f.GetValue(o), attr);
                    }
                }
            }

            // serialize all properties:
            foreach (PropertyInfo p in propertyMembers)
            {
                // there must be a getter defined:
                if (p.CanRead)
                {
                    JSonMemberAttribute attr = ReflectionHelper.GetCustomAttribute <JSonMemberAttribute>(p);
                    if (attr != null || jsonAttribute.AllowAllProperties)
                    {
                        WriteAttributedMember(p.Name, p.GetValue(o, null), attr);
                    }
                }
            }

            WriteObjectEnd();
        }
示例#3
0
 private void WriteAttributedMember(string itemName, object value, JSonMemberAttribute attr)
 {
     if (attr == null || !attr.SkipWhenNull || (attr.SkipWhenNull && value != null))
     {
         WriteMember(attr == null || string.IsNullOrEmpty(attr.Name) ? itemName : attr.Name);
         WriteEmbeddedValue(value);
     }
 }