internal static void WriteLateBoundObject(TextWriter writer, object value) { if (value == null) { writer.Write(JsonUtils.Null); return; } try { if (!JsState.Traverse(value)) { return; } var type = value.GetType(); var writeFn = type == typeof(object) ? WriteType <object, JsonTypeSerializer> .WriteObjectType : GetWriteFn(type); var prevState = JsState.IsWritingDynamic; JsState.IsWritingDynamic = true; writeFn(writer, value); JsState.IsWritingDynamic = prevState; } finally { JsState.UnTraverse(); } }
public static void Reset() { foreach (var rawSerializeType in HasSerializeFn.ToArray()) { Reset(rawSerializeType); } foreach (var rawSerializeType in HasIncludeDefaultValue.ToArray()) { Reset(rawSerializeType); } foreach (var uniqueType in __uniqueTypes.ToArray()) { Reset(uniqueType); } sModelFactory = ReflectionExtensions.GetConstructorMethodToCache; sTryToParsePrimitiveTypeValues = null; sTryToParseNumericType = null; sConvertObjectTypesIntoStringDictionary = null; sIncludeNullValues = null; sExcludeTypeInfo = null; sEmitCamelCaseNames = null; sEmitLowercaseUnderscoreNames = null; sDateHandler = null; sTimeSpanHandler = null; sPreferInterfaces = null; sThrowOnDeserializationError = null; sTypeAttr = null; sJsonTypeAttrInObject = null; sJsvTypeAttrInObject = null; sTypeWriter = null; sTypeFinder = null; sTreatEnumAsInteger = null; sAlwaysUseUtc = null; sAssumeUtc = null; sAppendUtcOffset = null; sEscapeUnicode = null; sIncludePublicFields = null; sReuseStringBuffer = null; HasSerializeFn = new HashSet <Type>(); HasIncludeDefaultValue = new HashSet <Type>(); TreatValueAsRefTypes = new HashSet <Type> { typeof(KeyValuePair <,>) }; sPropertyConvention = null; sExcludePropertyReferences = null; sExcludeTypes = new HashSet <Type> { typeof(Stream) }; __uniqueTypes = new HashSet <Type>(); sMaxDepth = 50; sParsePrimitiveIntegerTypes = null; sParsePrimitiveFloatingPointTypes = null; PlatformExtensions.ClearRuntimeAttributes(); ReflectionExtensions.Reset(); JsState.Reset(); }
public static void WriteObject(TextWriter writer, object value) { if (writer == null) { return; } using (JsState.OpenWriteObjectScope <T>()) { CacheFn(writer, value); } }