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
- WebRequest.cs
- XMLSyntaxException.cs
- WebServiceHost.cs
- DefinitionUpdate.cs
- Table.cs
- AssertFilter.cs
- RadioButtonFlatAdapter.cs
- StringComparer.cs
- ConfigurationSectionGroup.cs
- CompositeDataBoundControl.cs
- OleDbParameter.cs
- PeerNameResolver.cs
- SerializationStore.cs
- StackSpiller.Bindings.cs
- TemplateControlParser.cs
- TdsParser.cs
- entityreference_tresulttype.cs
- Point.cs
- List.cs
- FilteredAttributeCollection.cs
- FontStretchConverter.cs
- TextRunProperties.cs
- DPCustomTypeDescriptor.cs
- AttributeProviderAttribute.cs
- ColumnMapVisitor.cs
- SqlXmlStorage.cs
- DiscreteKeyFrames.cs
- ToolStripSplitButton.cs
- WindowsEditBoxRange.cs
- TimerEventSubscription.cs
- NegotiateStream.cs
- HashUtility.cs
- XPathArrayIterator.cs
- WeakEventTable.cs
- Exceptions.cs
- WebPartConnectVerb.cs
- SiteIdentityPermission.cs
- UniformGrid.cs
- OleDbTransaction.cs
- DbSourceCommand.cs
- SqlVisitor.cs
- SelectedCellsChangedEventArgs.cs
- SymbolTable.cs
- DocumentProperties.cs
- ProfileProvider.cs
- DataGridViewRowHeaderCell.cs
- FrameworkContentElement.cs
- DataKeyArray.cs
- ItemType.cs
- MenuAutomationPeer.cs
- BufferModeSettings.cs
- FontTypeConverter.cs
- SmiEventStream.cs
- DelegatingHeader.cs
- DataBoundControlAdapter.cs
- TemplatePartAttribute.cs
- WebPartConnectionsConfigureVerb.cs
- UpdateEventArgs.cs
- QilSortKey.cs
- DataViewManagerListItemTypeDescriptor.cs
- Condition.cs
- UrlParameterWriter.cs
- clipboard.cs
- MessageRpc.cs
- InfoCardSymmetricAlgorithm.cs
- TextWriterTraceListener.cs
- HyperLinkField.cs
- ReadOnlyCollectionBase.cs
- Panel.cs
- DeclaredTypeElement.cs
- FusionWrap.cs
- IPEndPoint.cs
- TaiwanCalendar.cs
- ExtractorMetadata.cs
- NetDataContractSerializer.cs
- Cursor.cs
- AuthenticationService.cs
- HttpStaticObjectsCollectionBase.cs
- HtmlTableRowCollection.cs
- WebServicesSection.cs
- UriExt.cs
- RadioButtonFlatAdapter.cs
- NativeWindow.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- SQLResource.cs
- SystemSounds.cs
- DynamicVirtualDiscoSearcher.cs
- SmiXetterAccessMap.cs
- XamlPathDataSerializer.cs
- ImageSourceValueSerializer.cs
- LocalizableAttribute.cs
- SafeTokenHandle.cs
- XmlWriter.cs
- InlineCategoriesDocument.cs
- HttpCookieCollection.cs
- UnsignedPublishLicense.cs
- WorkflowOperationFault.cs
- XmlWriterTraceListener.cs
- AttachedPropertyMethodSelector.cs
- NotifyCollectionChangedEventArgs.cs