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
- InvokeBinder.cs
- CancellationScope.cs
- XmlCompatibilityReader.cs
- Base64Decoder.cs
- PropertyGroupDescription.cs
- ProcessHostServerConfig.cs
- WebPartEditorCancelVerb.cs
- ToolStripControlHost.cs
- EasingFunctionBase.cs
- ClientUtils.cs
- WindowsPen.cs
- LogConverter.cs
- ToolStripPanelRow.cs
- SamlSubject.cs
- CurrencyWrapper.cs
- ProxyWebPartManager.cs
- RTLAwareMessageBox.cs
- TableRow.cs
- DocComment.cs
- Constraint.cs
- SecurityTokenException.cs
- PerformanceCounterCategory.cs
- TranslateTransform.cs
- FullTrustAssembliesSection.cs
- View.cs
- SynchronizationFilter.cs
- XamlDesignerSerializationManager.cs
- MachineSettingsSection.cs
- FixedTextView.cs
- QilGenerator.cs
- UpdatePanelControlTrigger.cs
- TextElementEnumerator.cs
- ResourceExpressionBuilder.cs
- DecoderNLS.cs
- DesignerVerb.cs
- BindingGroup.cs
- GridViewRow.cs
- RichTextBox.cs
- ObjectNavigationPropertyMapping.cs
- FixedSOMFixedBlock.cs
- OLEDB_Enum.cs
- StoreContentChangedEventArgs.cs
- NamespaceList.cs
- Configuration.cs
- DocumentXmlWriter.cs
- BindingContext.cs
- VisualBasicExpressionConverter.cs
- TemplateBamlRecordReader.cs
- ProviderConnectionPoint.cs
- CalendarDay.cs
- Rule.cs
- ByteFacetDescriptionElement.cs
- TextBox.cs
- DataSpaceManager.cs
- EventLogEntry.cs
- LinqDataSourceHelper.cs
- FrameAutomationPeer.cs
- CatalogPartChrome.cs
- ComAdminWrapper.cs
- ScriptingProfileServiceSection.cs
- Stacktrace.cs
- ActivityDesigner.cs
- DSASignatureFormatter.cs
- DataGridColumnCollection.cs
- SHA1Cng.cs
- MethodBuilderInstantiation.cs
- BlockUIContainer.cs
- ObjectHelper.cs
- SkipQueryOptionExpression.cs
- XmlDataSource.cs
- ControlPersister.cs
- TreeViewDesigner.cs
- WebReference.cs
- DocumentViewerHelper.cs
- String.cs
- DataGridViewCellLinkedList.cs
- NextPreviousPagerField.cs
- InputBinder.cs
- SqlDataSourceConfigureSelectPanel.cs
- RecognizedPhrase.cs
- CryptoHelper.cs
- CompositionAdorner.cs
- TextEffectCollection.cs
- PartialTrustHelpers.cs
- ErrorHandler.cs
- ExtendedPropertyInfo.cs
- SByteConverter.cs
- ViewGenResults.cs
- XmlSchemaValidationException.cs
- ExpressionQuoter.cs
- IconConverter.cs
- OracleColumn.cs
- ThemeDirectoryCompiler.cs
- EventMappingSettingsCollection.cs
- ThreadExceptionDialog.cs
- QuaternionRotation3D.cs
- XmlSchemaNotation.cs
- DocumentViewerConstants.cs
- ToolboxDataAttribute.cs
- FixedDSBuilder.cs