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
- CacheDependency.cs
- Rfc2898DeriveBytes.cs
- WebPartPersonalization.cs
- MaskedTextBoxTextEditorDropDown.cs
- ReliabilityContractAttribute.cs
- ReflectTypeDescriptionProvider.cs
- DesignerActionHeaderItem.cs
- Pen.cs
- SimpleHandlerFactory.cs
- BooleanAnimationBase.cs
- DataGridCell.cs
- ScrollChrome.cs
- DataControlPagerLinkButton.cs
- DataSourceBooleanViewSchemaConverter.cs
- ListBase.cs
- BlurEffect.cs
- ToolboxItem.cs
- PropertyCollection.cs
- BroadcastEventHelper.cs
- TextOnlyOutput.cs
- ToolStripComboBox.cs
- DocumentSchemaValidator.cs
- XmlQualifiedName.cs
- WebPartConnectionsConfigureVerb.cs
- PerfCounters.cs
- OutputScopeManager.cs
- ServiceTimeoutsBehavior.cs
- MergeFilterQuery.cs
- WorkItem.cs
- SiteOfOriginPart.cs
- HybridWebProxyFinder.cs
- SendKeys.cs
- TableLayoutCellPaintEventArgs.cs
- ParameterCollection.cs
- SelectorItemAutomationPeer.cs
- GeneralTransform3D.cs
- BaseCAMarshaler.cs
- BuildProviderAppliesToAttribute.cs
- ScriptingScriptResourceHandlerSection.cs
- SchemaHelper.cs
- BuildResult.cs
- ExpressionBuilderContext.cs
- MenuTracker.cs
- RequestQueryParser.cs
- SimpleTextLine.cs
- RepeaterCommandEventArgs.cs
- CheckBoxPopupAdapter.cs
- RootProfilePropertySettingsCollection.cs
- EntityContainerAssociationSetEnd.cs
- SimpleType.cs
- CheckedPointers.cs
- ScriptModule.cs
- PolicyLevel.cs
- BuildTopDownAttribute.cs
- ComponentCache.cs
- XamlVector3DCollectionSerializer.cs
- HttpServerVarsCollection.cs
- ProviderUtil.cs
- CaseExpr.cs
- CookieParameter.cs
- SqlTrackingWorkflowInstance.cs
- TreeViewHitTestInfo.cs
- RenderDataDrawingContext.cs
- XamlReader.cs
- mda.cs
- ContentPropertyAttribute.cs
- TraceXPathNavigator.cs
- ControlDesignerState.cs
- BaseAppDomainProtocolHandler.cs
- DataGridCellsPanel.cs
- HotSpot.cs
- ExpressionBinding.cs
- DbConnectionClosed.cs
- TableItemProviderWrapper.cs
- FilteredXmlReader.cs
- FlowDocumentPaginator.cs
- CatalogPartChrome.cs
- UdpReplyToBehavior.cs
- ScrollEvent.cs
- CodeSnippetStatement.cs
- MouseEventArgs.cs
- Rfc2898DeriveBytes.cs
- infer.cs
- LocatorManager.cs
- PointCollection.cs
- FileDataSourceCache.cs
- GeometryValueSerializer.cs
- ClientBuildManager.cs
- RegexRunner.cs
- OperationCanceledException.cs
- ActiveXHelper.cs
- DataGridViewBindingCompleteEventArgs.cs
- CmsInterop.cs
- InstanceDescriptor.cs
- DesignerContextDescriptor.cs
- MessageHeaderInfoTraceRecord.cs
- StylusLogic.cs
- EditorZoneBase.cs
- ProfileInfo.cs
- EditingMode.cs