The JavaScriptSerializer class is used internally by the asynchronous communication layer to serialize and deserialize the data that is passed between the browser and the Web server. You cannot access that instance of the serializer. However, this class exposes a public API. Therefore, you can use the class when you want to work with JavaScript Object Notation (JSON) in managed code.
To serialize an object, use the Serialize method. To deserialize a JSON string, use the Deserialize<(Of <(T>)>) or DeserializeObject methods. To serialize and deserialize types that are not natively supported by JavaScriptSerializer, implement custom converters by using the JavaScriptConverter class. Then register the converters by using the RegisterConverters method.
Mapping Between Managed Types and JSON
The following table shows the mapping between managed types and JSON for the serialization process. These managed types are natively supported by JavaScriptSerializer. When you are deserializing from a JSON string to a managed type, the same mapping applies. However, deserialization can be asymmetric; not all serializable managed types can be deserialized from JSON.
Note: |
|---|
A multidimensional array is serialized as a one-dimensional array, and you should use it as a flat array.
|
Managed type
|
JSON equivalent
|
|---|
String (UTF-8 encoding only).
|
String
|
Char
|
String
|
Single null char (such as, \0 )
|
Null
|
Boolean
|
Boolean. Represented in JSON as true or false
|
nullNothingnullptra null reference (Nothing in Visual Basic) (nullNothingnullptra null reference (Nothing in Visual Basic) object references and Nullable value types).
|
A string value of null
|
DBNull
|
A string value of null
|
Primitive numeric (or numeric-compatible) types: Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Double, and Single. The culture-invariant string representation is used.
|
Number
|
DateTime
|
Date object, represented in JSON as "\/Date(number of ticks)\/". The number of ticks is a positive or negative long value that indicates the number of ticks (milliseconds) that have elapsed since midnight 01 January, 1970 UTC.
The maximum supported date value is MaxValue (12/31/9999 11:59:59 PM) and the minimum supported date value is MinValue (1/1/0001 12:00:00 AM).
|
Enumerations of integer type
|
Integer equivalent of the enumeration value
|
Types that implement IEnumerable or System.Collections.Generic..::.IEnumerable<(Of <(T>)>) that are not also implementations of IDictionary or System.Collections.Generic..::.IDictionary<(Of <(TKey, TValue>)>). This includes types such as Array, ArrayList, and List<(Of <(T>)>).
|
Array that uses JSON array syntax
|
Types that implement IDictionary or System.Collections.Generic..::.IDictionary<(Of <(TKey, TValue>)>). This includes types such as Dictionary<(Of <(TKey, TValue>)>) and Hashtable.
|
JavaScript object that uses JSON dictionary syntax
|
Custom concrete (non-abstract) types that have public instance properties that have get accessors or public instance fields.
Note that public write-only properties, public property or public field attributes marked with ScriptIgnoreAttribute, and public indexed properties in these types are ignored.
|
JavaScript object that uses JSON dictionary syntax. A special metadata property named "__type" is included to ensure correct deserialization. Make sure that public instance properties have get and set accessors to ensure correct deserialization.
|
Guid
|
String representation of a GUID
|
Uri
|
String representation of the return value of GetComponents
|