JavaScriptSerializer.Deserialize Methode

Definitie

Overloads

Name Description
Deserialize(String, Type)

Converteert een tekenreeks met JSON-indeling naar een object van het opgegeven type.

Deserialize<T>(String)

Converteert de opgegeven JSON-tekenreeks naar een object van het type T.

Deserialize(String, Type)

Converteert een tekenreeks met JSON-indeling naar een object van het opgegeven type.

public:
 System::Object ^ Deserialize(System::String ^ input, Type ^ targetType);
public object Deserialize(string input, Type targetType);
member this.Deserialize : string * Type -> obj
Public Function Deserialize (input As String, targetType As Type) As Object

Parameters

input
String

De JSON-tekenreeks die moet worden gedeserialiseerd.

targetType
Type

Het type van het resulterende object.

Retouren

Het gedeserialiseerde object.

Uitzonderingen

input is null.

De lengte van input het bestand overschrijdt de waarde van MaxJsonLength.

– of –

De limiet voor recursie die is gedefinieerd door RecursionLimit is overschreden.

– of –

input bevat een onverwachte tekenreeks.

– of –

input is een woordenlijsttype en er is een niet-tekenreekssleutelwaarde aangetroffen.

– of –

input bevat liddefinities die niet beschikbaar zijn voor het doeltype.

input bevat een eigenschap '__type' die een aangepast type aangeeft, maar de type-resolver die momenteel aan de serializer is gekoppeld, kan geen bijbehorend beheerd type vinden.

– of –

input bevat een eigenschap '__type' die een aangepast type aangeeft, maar het resultaat van het deserialiseren van de bijbehorende JSON-tekenreeks kan niet worden toegewezen aan het verwachte doeltype.

– of –

input bevat een eigenschap '__type' die aangeeft Object of een niet-instanteerbaar type (bijvoorbeeld een abstract type of een interface).

– of –

Er is geprobeerd een JSON-matrix te converteren naar een matrixachtig beheerd type dat niet wordt ondersteund voor gebruik als JSON-deserialisatiedoel.

– of –

Het is niet mogelijk om te converteren input naar het doeltype.

Opmerkingen

Met deze deserialisatiemethode wordt niet geprobeerd de hoofdmap van de objectgrafiek naar een specifiek type te casten, zoals de Deserialize methode dat doet.

Van toepassing op

Deserialize<T>(String)

Converteert de opgegeven JSON-tekenreeks naar een object van het type T.

public:
generic <typename T>
 T Deserialize(System::String ^ input);
public T Deserialize<T>(string input);
member this.Deserialize : string -> 'T
Public Function Deserialize(Of T) (input As String) As T

Type parameters

T

Het type van het resulterende object.

Parameters

input
String

De JSON-tekenreeks die moet worden gedeserialiseerd.

Retouren

T

Het gedeserialiseerde object.

Uitzonderingen

De input lengte overschrijdt de waarde van MaxJsonLength.

– of –

De limiet voor recursie die is gedefinieerd door RecursionLimit is overschreden.

– of –

input bevat een onverwachte tekenreeks.

– of –

input is een woordenlijsttype en er is een niet-tekenreekssleutelwaarde aangetroffen.

– of –

input bevat liddefinities die niet beschikbaar zijn voor het type T.

input is null.

input bevat een eigenschap '__type' die een aangepast type aangeeft, maar het type resolver dat is gekoppeld aan de serializer, kan geen overeenkomend beheerd type vinden.

– of –

input bevat een eigenschap '__type' die een aangepast type aangeeft, maar het resultaat van het deserialiseren van de bijbehorende JSON-tekenreeks kan niet worden toegewezen aan het verwachte doeltype.

– of –

input bevat een eigenschap '__type' die aangeeft Object of een niet-instanteerbaar type (bijvoorbeeld een abstracte typen of een interface).

– of –

Er is geprobeerd een JSON-matrix te converteren naar een matrixachtig beheerd type dat niet wordt ondersteund voor gebruik als JSON-deserialisatiedoel.

– of –

Het is niet mogelijk om te converteren input naar T.

Voorbeelden

In het volgende voorbeeld ziet u een eenvoudige afbeelding van het serialiseren en deserialiseren van gegevensobjecten.

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.Script.Serialization;

namespace ExampleApplication
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var RegisteredUsers = new List<Person>();
            RegisteredUsers.Add(new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 2, Name = "Nicole Wilcox", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 3, Name = "Adrian Martinson", Registered = false });
            RegisteredUsers.Add(new Person() { PersonID = 4, Name = "Nora Osborn", Registered = false });

            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(RegisteredUsers);
            // Produces string value of:
            // [
            //     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
            //     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
            //     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
            //     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
            // ]

            var deserializedResult = serializer.Deserialize<List<Person>>(serializedResult);
            // Produces List with 4 Person objects
        }
    }
}
Imports System.Web.Script.Serialization

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Dim RegisteredUsers As New List(Of Person)()
        RegisteredUsers.Add(New Person With {.PersonID = 1, .Name = "Bryon Hetrick", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 2, .Name = "Nicole Wilcox", .Registered = True})
        RegisteredUsers.Add(New Person With {.PersonID = 3, .Name = "Adrian Martinson", .Registered = False})
        RegisteredUsers.Add(New Person With {.PersonID = 4, .Name = "Nora Osborn", .Registered = False})

        Dim serializer As New JavaScriptSerializer()
        Dim serializedResult = serializer.Serialize(RegisteredUsers)
        ' Produces string value of:
        ' [
        '     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
        '     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
        '     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
        '     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
        ' ]

        Dim deserializedResult = serializer.Deserialize(Of List(Of Person))(serializedResult)
        ' Produces List with 4 Person objects
    End Sub
End Class

Hiervoor is een klasse met de naam Personvereist. Deze wordt weergegeven in het volgende voorbeeld.

namespace ExampleApplication
{
    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public bool Registered { get; set; }
    }
}
Public Class Person
    Public Property PersonID As Integer
    Public Property Name As String
    Public Property Registered As Boolean
End Class

Opmerkingen

De Deserialize methode is gelijk aan het eerst met behulp van de DeserializeObject methode om een objectgrafiek te verkrijgen en vervolgens het resultaat te casten om te typen T.

Tijdens de deserialisatie wordt naar de huidige type resolver van de serializer verwezen, waarmee wordt bepaald welk beheerd type moet worden gebruikt bij het converteren van elementen die zijn genest in matrices en woordenlijsttypen. Als gevolg hiervan doorloopt het deserialisatieproces alle geneste elementen van input. Zie de JavaScriptTypeResolver klasse voor meer informatie over type resolvers.

Van toepassing op