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
- DigitShape.cs
- AsymmetricKeyExchangeDeformatter.cs
- X509CertificateRecipientServiceCredential.cs
- SchemaCollectionPreprocessor.cs
- VariableDesigner.xaml.cs
- ListBoxItemAutomationPeer.cs
- XsltConvert.cs
- SqlErrorCollection.cs
- PermissionSetEnumerator.cs
- GC.cs
- DrawListViewColumnHeaderEventArgs.cs
- RequestTimeoutManager.cs
- CompiledQueryCacheKey.cs
- ConsumerConnectionPoint.cs
- TableTextElementCollectionInternal.cs
- DocumentXPathNavigator.cs
- SecurityTokenException.cs
- ErrorStyle.cs
- CodeSubDirectory.cs
- SiteMapNodeCollection.cs
- SizeFConverter.cs
- ReadContentAsBinaryHelper.cs
- ResourceDescriptionAttribute.cs
- storepermissionattribute.cs
- AliasedExpr.cs
- DesignerRegionCollection.cs
- BuildProvidersCompiler.cs
- UseAttributeSetsAction.cs
- XPathNodeList.cs
- EqualityComparer.cs
- DefaultTraceListener.cs
- RemoteWebConfigurationHostServer.cs
- ParameterDataSourceExpression.cs
- GridViewPageEventArgs.cs
- serverconfig.cs
- X509InitiatorCertificateServiceElement.cs
- RegexStringValidator.cs
- SqlConnectionPoolProviderInfo.cs
- StateRuntime.cs
- BindableTemplateBuilder.cs
- Perspective.cs
- IfAction.cs
- XmlCharCheckingReader.cs
- DefaultValidator.cs
- MsmqIntegrationElement.cs
- InnerItemCollectionView.cs
- DataObject.cs
- StaticResourceExtension.cs
- PseudoWebRequest.cs
- AssemblyAttributes.cs
- BamlRecords.cs
- SplitContainer.cs
- Dictionary.cs
- ShaderRenderModeValidation.cs
- CollectionDataContractAttribute.cs
- TextPointer.cs
- IpcClientManager.cs
- AppDomain.cs
- WindowClosedEventArgs.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- DebuggerAttributes.cs
- WebPartConnectionsDisconnectVerb.cs
- LineInfo.cs
- SingleResultAttribute.cs
- BindValidator.cs
- NamespaceDecl.cs
- OpenFileDialog.cs
- ColorConvertedBitmap.cs
- XmlDictionaryReader.cs
- ZipPackage.cs
- SoapAttributes.cs
- ProtectedConfigurationProviderCollection.cs
- MethodRental.cs
- ListItemCollection.cs
- SwitchElementsCollection.cs
- TreeNodeBinding.cs
- ZoneLinkButton.cs
- DefaultSection.cs
- DBBindings.cs
- XmlSchemaAnnotated.cs
- HeaderLabel.cs
- CollectionViewProxy.cs
- Thread.cs
- AVElementHelper.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- Exceptions.cs
- GZipStream.cs
- CryptoApi.cs
- Symbol.cs
- WindowsIdentity.cs
- TraceEventCache.cs
- DoubleIndependentAnimationStorage.cs
- SpeechSynthesizer.cs
- FixedPageAutomationPeer.cs
- StreamReader.cs
- Visitors.cs
- TabControlCancelEvent.cs
- ClientFactory.cs
- MessageSecurityException.cs
- RelationshipConverter.cs