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
- EventBuilder.cs
- RelationshipNavigation.cs
- Font.cs
- ResourceKey.cs
- HttpResponseInternalWrapper.cs
- ProfileWorkflowElement.cs
- NewItemsContextMenuStrip.cs
- AnnotationMap.cs
- Msmq4PoisonHandler.cs
- UnsafeNativeMethods.cs
- DataDesignUtil.cs
- MissingSatelliteAssemblyException.cs
- DependencyObjectValidator.cs
- RtfToXamlLexer.cs
- TransportBindingElement.cs
- UIHelper.cs
- ParentUndoUnit.cs
- GridViewSelectEventArgs.cs
- InvalidDataException.cs
- ResourceDefaultValueAttribute.cs
- KnownBoxes.cs
- ButtonPopupAdapter.cs
- AudienceUriMode.cs
- ClientSection.cs
- AsyncOperationLifetimeManager.cs
- Publisher.cs
- ImportCatalogPart.cs
- OuterGlowBitmapEffect.cs
- RuntimeWrappedException.cs
- FileStream.cs
- ViewBox.cs
- IntSecurity.cs
- TriState.cs
- GridLengthConverter.cs
- templategroup.cs
- UnsafeNativeMethodsPenimc.cs
- PropertyDescriptor.cs
- InOutArgumentConverter.cs
- GenericEnumConverter.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- UnknownBitmapEncoder.cs
- DoWhileDesigner.xaml.cs
- ObjectMemberMapping.cs
- DynamicEndpointElement.cs
- StylusLogic.cs
- CellPartitioner.cs
- DependencyObjectProvider.cs
- Stack.cs
- ImageSourceValueSerializer.cs
- CodeThrowExceptionStatement.cs
- Span.cs
- Line.cs
- ListBase.cs
- BaseResourcesBuildProvider.cs
- CultureNotFoundException.cs
- ExtentCqlBlock.cs
- ControlsConfig.cs
- ParameterBinding.cs
- VirtualPath.cs
- TextFragmentEngine.cs
- Debugger.cs
- PrintingPermission.cs
- Command.cs
- AdPostCacheSubstitution.cs
- HScrollBar.cs
- OdbcParameterCollection.cs
- DbConnectionPoolGroup.cs
- TextBoxBase.cs
- LongValidator.cs
- XmlBindingWorker.cs
- TargetException.cs
- VirtualPath.cs
- WebPartVerbsEventArgs.cs
- ControlParameter.cs
- ColorConverter.cs
- NamespaceInfo.cs
- PrivilegeNotHeldException.cs
- LogAppendAsyncResult.cs
- UIElement3D.cs
- RemotingAttributes.cs
- ColumnReorderedEventArgs.cs
- ListChunk.cs
- TerminatorSinks.cs
- RegistrationServices.cs
- ErrorTolerantObjectWriter.cs
- XD.cs
- SiteOfOriginContainer.cs
- Rfc2898DeriveBytes.cs
- SubMenuStyle.cs
- RenderCapability.cs
- ObjRef.cs
- UIElement3DAutomationPeer.cs
- DayRenderEvent.cs
- SmtpMail.cs
- HtmlControl.cs
- WorkingDirectoryEditor.cs
- TreeBuilder.cs
- TransformerTypeCollection.cs
- MessageSmuggler.cs
- IconConverter.cs