Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / Runtime / Serialization / Json / JsonObjectDataContract.cs / 1 / 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 System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( XmlObjectSerializer.CreateSerializationException(SR2.GetString(SR2.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 System.ServiceModel.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; 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NotifyParentPropertyAttribute.cs
- NativeRecognizer.cs
- CharacterMetrics.cs
- SafeNativeMethods.cs
- Matrix3D.cs
- ExtendedProtectionPolicyTypeConverter.cs
- TransformValueSerializer.cs
- LocalizedNameDescriptionPair.cs
- OpenTypeLayoutCache.cs
- RequestStatusBarUpdateEventArgs.cs
- WebEventCodes.cs
- ObjectAnimationUsingKeyFrames.cs
- PropertyOverridesTypeEditor.cs
- PlaceHolder.cs
- FrameworkContentElement.cs
- ColorTransformHelper.cs
- QueryCacheEntry.cs
- ImageSource.cs
- ImageSource.cs
- _SslSessionsCache.cs
- DeferredSelectedIndexReference.cs
- BindingExpressionUncommonField.cs
- ImplicitInputBrush.cs
- GraphicsContainer.cs
- DocobjHost.cs
- TextEditorThreadLocalStore.cs
- IgnoreDeviceFilterElementCollection.cs
- NullRuntimeConfig.cs
- ProfileSection.cs
- BindingGroup.cs
- PropertyConverter.cs
- ListView.cs
- ScrollChrome.cs
- URL.cs
- CollectionBuilder.cs
- UserControl.cs
- CustomAttributeBuilder.cs
- DecoratedNameAttribute.cs
- KeyValuePairs.cs
- DynamicDocumentPaginator.cs
- Inline.cs
- Soap.cs
- XslCompiledTransform.cs
- TableLayoutSettings.cs
- EventToken.cs
- Opcode.cs
- GestureRecognitionResult.cs
- Permission.cs
- ScriptModule.cs
- BamlRecordReader.cs
- XmlSchemaNotation.cs
- PreviewPageInfo.cs
- UserInitiatedNavigationPermission.cs
- DataObject.cs
- ValidationRuleCollection.cs
- FixUpCollection.cs
- BaseValidator.cs
- TemplateEditingVerb.cs
- Pair.cs
- WindowsRichEdit.cs
- COM2ColorConverter.cs
- InternalCache.cs
- TileBrush.cs
- CustomValidator.cs
- StateBag.cs
- Regex.cs
- ToolStripItemBehavior.cs
- ButtonBase.cs
- EncryptedData.cs
- LogStore.cs
- linebase.cs
- SystemEvents.cs
- Parallel.cs
- CodeSnippetTypeMember.cs
- EditorZone.cs
- DigitShape.cs
- ArgIterator.cs
- SqlInternalConnection.cs
- SingleResultAttribute.cs
- NameTable.cs
- oledbmetadatacolumnnames.cs
- PolygonHotSpot.cs
- HttpProxyTransportBindingElement.cs
- SplitterEvent.cs
- WindowsTab.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- UserUseLicenseDictionaryLoader.cs
- WpfXamlType.cs
- StylusLogic.cs
- StrokeNodeData.cs
- AuthStoreRoleProvider.cs
- Brush.cs
- Pens.cs
- PersonalizationAdministration.cs
- WindowsToolbar.cs
- LocatorBase.cs
- ModelTypeConverter.cs
- CompressEmulationStream.cs
- Translator.cs
- CellNormalizer.cs