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
- CompilerError.cs
- ChangeNode.cs
- TileBrush.cs
- ProgressBar.cs
- Stroke.cs
- DataFieldConverter.cs
- HMACRIPEMD160.cs
- DecimalAnimationUsingKeyFrames.cs
- FlowDocumentView.cs
- CompModSwitches.cs
- OdbcEnvironment.cs
- CultureInfoConverter.cs
- MailMessageEventArgs.cs
- SelectionPattern.cs
- TextBox.cs
- TemplatePropertyEntry.cs
- remotingproxy.cs
- Camera.cs
- MatrixAnimationBase.cs
- MediaPlayer.cs
- Shape.cs
- LicenseManager.cs
- FixedSchema.cs
- NameValuePair.cs
- AdornerDecorator.cs
- XmlCodeExporter.cs
- ShaderEffect.cs
- TableProviderWrapper.cs
- CompositeActivityValidator.cs
- XmlCharType.cs
- IgnoreSection.cs
- PerformanceCountersElement.cs
- DataGridViewImageCell.cs
- FileClassifier.cs
- AsymmetricKeyExchangeFormatter.cs
- OleAutBinder.cs
- SapiAttributeParser.cs
- ComponentSerializationService.cs
- LightweightCodeGenerator.cs
- StylusSystemGestureEventArgs.cs
- FontConverter.cs
- DataGridViewCellCollection.cs
- XmlChoiceIdentifierAttribute.cs
- Number.cs
- SmtpSection.cs
- ToolboxItemAttribute.cs
- SignatureConfirmationElement.cs
- CodeEventReferenceExpression.cs
- SelectionItemPattern.cs
- TextReader.cs
- PeerNameRegistration.cs
- messageonlyhwndwrapper.cs
- TransactionManager.cs
- DetailsViewPageEventArgs.cs
- ADRole.cs
- HighlightVisual.cs
- DBConcurrencyException.cs
- XmlHierarchyData.cs
- WebPartMinimizeVerb.cs
- PolyBezierSegment.cs
- QilName.cs
- CacheDependency.cs
- COM2PropertyPageUITypeConverter.cs
- HwndSourceParameters.cs
- ObjectViewEntityCollectionData.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- Route.cs
- OSFeature.cs
- DataList.cs
- DeferredSelectedIndexReference.cs
- Duration.cs
- ErrorEventArgs.cs
- NodeLabelEditEvent.cs
- BinaryParser.cs
- ServicePoint.cs
- VirtualizedCellInfoCollection.cs
- TemplateControlBuildProvider.cs
- WorkflowTimerService.cs
- PingOptions.cs
- ConcurrentDictionary.cs
- FSWPathEditor.cs
- TextBox.cs
- Version.cs
- ExpressionEditorAttribute.cs
- EventData.cs
- OperationInvokerBehavior.cs
- WebPartDescriptionCollection.cs
- TrackingCondition.cs
- CommonObjectSecurity.cs
- OperationAbortedException.cs
- ActivityDesigner.cs
- TableCell.cs
- SettingsBindableAttribute.cs
- DrawTreeNodeEventArgs.cs
- HostingEnvironment.cs
- FixedSchema.cs
- CommandHelpers.cs
- ClientScriptItem.cs
- SchemaSetCompiler.cs
- DocumentPaginator.cs