Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / Json / JsonObjectDataContract.cs / 1305376 / JsonObjectDataContract.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Runtime.Serialization.Json { using System.Xml; using System.ServiceModel; using System.Runtime.Serialization; using System.Globalization; class JsonObjectDataContract : JsonDataContract { public JsonObjectDataContract(DataContract traditionalDataContract) : base(traditionalDataContract) { } public override object ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) { object obj; string contentMode = jsonReader.GetAttribute(JsonGlobals.typeString); switch (contentMode) { case JsonGlobals.nullString: jsonReader.Skip(); obj = null; break; case JsonGlobals.booleanString: obj = jsonReader.ReadElementContentAsBoolean(); break; case JsonGlobals.stringString: case null: obj = jsonReader.ReadElementContentAsString(); break; case JsonGlobals.numberString: obj = ParseJsonNumber(jsonReader.ReadElementContentAsString()); break; case JsonGlobals.objectString: jsonReader.Skip(); obj = new object(); break; case JsonGlobals.arrayString: // Read as object array return DataContractJsonSerializer.ReadJsonValue(DataContract.GetDataContract(Globals.TypeOfObjectArray), jsonReader, context); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.JsonUnexpectedAttributeValue, contentMode))); } if (context != null) { context.AddNewObject(obj); } return obj; } public override void WriteJsonValueCore(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) { jsonWriter.WriteAttributeString(null, JsonGlobals.typeString, null, JsonGlobals.objectString); } internal static object ParseJsonNumber(string value, out TypeCode objectTypeCode) { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString(System.Runtime.Serialization.SR.XmlInvalidConversion, value, Globals.TypeOfInt))); } if (value.IndexOfAny(JsonGlobals.floatingPointCharacters) == -1) { int intValue; if (Int32.TryParse(value, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out intValue)) { objectTypeCode = TypeCode.Int32; return intValue; } long longValue; if (Int64.TryParse(value, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out longValue)) { objectTypeCode = TypeCode.Int64; return longValue; } } decimal decimalValue; if (Decimal.TryParse(value, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out decimalValue)) { objectTypeCode = TypeCode.Decimal; //check for decimal underflow if (decimalValue == Decimal.Zero) { double doubleValue = XmlConverter.ToDouble(value); if (doubleValue != 0.0) { objectTypeCode = TypeCode.Double; return doubleValue; } } return decimalValue; } objectTypeCode = TypeCode.Double; return XmlConverter.ToDouble(value); } static object ParseJsonNumber(string value) { TypeCode unusedTypeCode; return ParseJsonNumber(value, out unusedTypeCode); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ControlSerializer.cs
- ByteRangeDownloader.cs
- AsyncOperation.cs
- TcpChannelFactory.cs
- Effect.cs
- ComponentResourceKey.cs
- ErrorEventArgs.cs
- COM2PropertyDescriptor.cs
- OutgoingWebRequestContext.cs
- Int32Rect.cs
- _LocalDataStoreMgr.cs
- Publisher.cs
- TextTreeTextNode.cs
- QueryOptionExpression.cs
- WinInetCache.cs
- PixelFormat.cs
- OutOfMemoryException.cs
- MarginsConverter.cs
- XmlBinaryReader.cs
- SkinBuilder.cs
- DesignerFrame.cs
- Subtract.cs
- TraversalRequest.cs
- CollectionViewGroupRoot.cs
- ErrorWebPart.cs
- DataChangedEventManager.cs
- PriorityChain.cs
- ConnectionsZone.cs
- ReadOnlyCollection.cs
- TouchEventArgs.cs
- EnumerableWrapperWeakToStrong.cs
- FileLogRecordStream.cs
- cookie.cs
- MD5.cs
- DbProviderFactoriesConfigurationHandler.cs
- PolyLineSegmentFigureLogic.cs
- ExtendedPropertyCollection.cs
- EventLogTraceListener.cs
- IndexerNameAttribute.cs
- InlineUIContainer.cs
- _TLSstream.cs
- TreeViewHitTestInfo.cs
- AnnotationResourceCollection.cs
- ProtocolElement.cs
- SynchronizationContext.cs
- SyndicationElementExtensionCollection.cs
- Registry.cs
- WebPartEditorApplyVerb.cs
- XhtmlStyleClass.cs
- BeginEvent.cs
- SHA512.cs
- IResourceProvider.cs
- CodePrimitiveExpression.cs
- DesignTableCollection.cs
- BitmapEffectGeneralTransform.cs
- GeneratedCodeAttribute.cs
- GroupBox.cs
- NegatedConstant.cs
- BooleanFunctions.cs
- XmlBaseReader.cs
- NumberSubstitution.cs
- MultiSelector.cs
- HostUtils.cs
- DockProviderWrapper.cs
- externdll.cs
- OpCodes.cs
- SqlConnectionFactory.cs
- TimeStampChecker.cs
- DefaultProxySection.cs
- SafeNativeMethods.cs
- BaseCodePageEncoding.cs
- ExceptQueryOperator.cs
- SoapInteropTypes.cs
- LeaseManager.cs
- CroppedBitmap.cs
- FormsAuthenticationConfiguration.cs
- ServicePoint.cs
- CorrelationTokenTypeConvertor.cs
- EntitySqlQueryCacheKey.cs
- Repeater.cs
- XmlSchemaSubstitutionGroup.cs
- SizeF.cs
- CommandField.cs
- ProcessHostFactoryHelper.cs
- HttpListener.cs
- CompositeFontInfo.cs
- SerTrace.cs
- ResumeStoryboard.cs
- DeobfuscatingStream.cs
- InternalPermissions.cs
- GridViewCommandEventArgs.cs
- ToolStripSplitStackLayout.cs
- GcSettings.cs
- IssuanceLicense.cs
- PartialTrustValidationBehavior.cs
- VoiceObjectToken.cs
- Point4D.cs
- CancellableEnumerable.cs
- DocumentGridPage.cs
- FileSystemEventArgs.cs