Ejemplo n.º 1
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            JToken jToken = JToken.FromObject(value);

            if (jToken.Type != JTokenType.Object)
            {
                jToken.WriteTo(writer, dateTimeConverter);
            }
            else
            {
                JObject jObject = (JObject)jToken;

                // Find any properties with illegal field names and replace them with well-formed properties to avoid an insert failure down the road.
                var propertiesWithIllegalNames = MongoJsonHelper.FindPropertiesWithIllegalNames(jObject);
                foreach (var propertyWithIllegalName in propertiesWithIllegalNames)
                {
                    JProperty propertyWithLegalName = MongoJsonHelper.CreateLegalCopy(propertyWithIllegalName);
                    propertyWithIllegalName.Replace(propertyWithLegalName);
                }

                jObject.WriteTo(writer, dateTimeConverter);
            }
        }