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
- ConfigXmlDocument.cs
- PersonalizationDictionary.cs
- ToolboxComponentsCreatingEventArgs.cs
- DiagnosticsElement.cs
- Token.cs
- EntityReference.cs
- fixedPageContentExtractor.cs
- AnimationTimeline.cs
- DefaultValueAttribute.cs
- CookieProtection.cs
- ProxyGenerationError.cs
- CryptoApi.cs
- CodeAttributeDeclarationCollection.cs
- ToolboxItemAttribute.cs
- ToolStripContainerActionList.cs
- SmtpDigestAuthenticationModule.cs
- GetMemberBinder.cs
- ClearTypeHintValidation.cs
- PermissionListSet.cs
- PersonalizationProviderHelper.cs
- ExceptionUtil.cs
- TagMapInfo.cs
- MediaContextNotificationWindow.cs
- UnsafeNativeMethods.cs
- XPathLexer.cs
- GacUtil.cs
- XmlReaderSettings.cs
- WriteFileContext.cs
- DbProviderConfigurationHandler.cs
- CodeDOMUtility.cs
- ScopelessEnumAttribute.cs
- LayoutEngine.cs
- CustomLineCap.cs
- CodeAttributeDeclaration.cs
- TypeReference.cs
- MethodImplAttribute.cs
- RepeaterItemCollection.cs
- GenericTextProperties.cs
- GacUtil.cs
- PassportAuthentication.cs
- UnmanagedMarshal.cs
- FocusManager.cs
- CompilationLock.cs
- ListView.cs
- ResourceKey.cs
- Geometry3D.cs
- PageSetupDialog.cs
- XmlSchemaSearchPattern.cs
- InfocardClientCredentials.cs
- PropertyDescriptorComparer.cs
- SEHException.cs
- RedistVersionInfo.cs
- TextContainerHelper.cs
- CodeDelegateCreateExpression.cs
- WebPartManagerInternals.cs
- SoapSchemaExporter.cs
- SocketElement.cs
- IntersectQueryOperator.cs
- RelationshipConstraintValidator.cs
- DbInsertCommandTree.cs
- AddingNewEventArgs.cs
- XmlSchemaImport.cs
- TPLETWProvider.cs
- ProtectedProviderSettings.cs
- TextTreeObjectNode.cs
- Crc32.cs
- RNGCryptoServiceProvider.cs
- XmlCharCheckingReader.cs
- XmlAnyElementAttribute.cs
- Tokenizer.cs
- ObjectParameter.cs
- TranslateTransform.cs
- ItemsPresenter.cs
- InvalidEnumArgumentException.cs
- BamlReader.cs
- Label.cs
- GridViewAutomationPeer.cs
- FilteredReadOnlyMetadataCollection.cs
- PartitionResolver.cs
- TextCharacters.cs
- SqlMethodAttribute.cs
- DocumentScope.cs
- UnsafeNativeMethods.cs
- Hex.cs
- ObjectItemCollection.cs
- Rect3D.cs
- HtmlTitle.cs
- HandlerWithFactory.cs
- BasicHttpSecurityElement.cs
- RegexWorker.cs
- XmlBinaryReader.cs
- RectValueSerializer.cs
- Msec.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- HttpDictionary.cs
- BinaryUtilClasses.cs
- DataControlFieldCollection.cs
- FloaterParaClient.cs
- HostedNamedPipeTransportManager.cs
- Timer.cs