Freigeben über


JavaScriptSerializer.Deserialize Methode

Definition

Überlädt

Deserialize(String, Type)

Konvertiert eine JSON-formatierte Zeichenfolge in ein Objekt des angegebenen Typs.

Deserialize<T>(String)

Konvertiert die angegebene JSON-Zeichenfolge in ein Objekt vom Typ T.

Deserialize(String, Type)

Konvertiert eine JSON-formatierte Zeichenfolge in ein Objekt des angegebenen Typs.

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

Parameter

input
String

Die JSON-Zeichenfolge, die deserialisiert werden soll.

targetType
Type

Der Typ des resultierenden Objekts.

Gibt zurück

Das deserialisierte Objekt.

Ausnahmen

input ist null.

Die Länge von input überschreitet den Wert von MaxJsonLength.

- oder -

Die von RecursionLimit definierte Rekursionsgrenze wurde überschritten.

- oder -

input enthält eine unerwartete Zeichensequenz.

- oder -

input ist ein Wörterbuchtyp, und es wurde ein Schlüsselwert gefunden, der nicht aus einer Zeichenfolge besteht.

- oder -

input enthält Memberdefinitionen, die für den Zieltyp nicht verfügbar sind.

input enthält eine "__type"-Eigenschaft, die einen benutzerdefinierten Typ angibt, jedoch kann der derzeit dem Serialisierungsprogramm zugeordnete Typresolver keinen zugehörigen verwalteten Typ finden.

- oder -

input enthält eine "__type"-Eigenschaft, die einen benutzerdefinierten Typ angibt, jedoch kann das Deserialisierungsergebnis für die entsprechende JSON-Zeichenfolge nicht dem zugehörigen Zieltyp zugewiesen werden.

- oder -

input enthält eine "__type"-Eigenschaft, die Object oder einen nicht instanziierbaren Typ angibt (z. B. einen abstrakten Typ oder eine Schnittstelle).

- oder -

Es wurde versucht, ein JSON-Array in einen arrayähnlichen verwalteten Typ zu konvertieren, der als JSON-Deserialisierungsziel nicht unterstützt wird.

- oder -

Es ist nicht möglich, input in den Zieltyp zu konvertieren.

Hinweise

Diese Deserialisierungsmethode versucht nicht, den Stamm des Objektgraphen in einen bestimmten Typ umzustrukturieren, wie dies bei der Methode der Deserialize Fall ist.

Gilt für:

Deserialize<T>(String)

Konvertiert die angegebene JSON-Zeichenfolge in ein Objekt vom Typ 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

Typparameter

T

Der Typ des resultierenden Objekts.

Parameter

input
String

Die zu deserialisierende JSON-Zeichenfolge.

Gibt zurück

T

Das deserialisierte Objekt.

Ausnahmen

Die Länge von input überschreitet den Wert von MaxJsonLength.

- oder -

Die von RecursionLimit definierte Rekursionsgrenze wurde überschritten.

- oder -

input enthält eine unerwartete Zeichensequenz.

- oder -

input ist ein Wörterbuchtyp, und es wurde ein Schlüsselwert gefunden, der nicht aus einer Zeichenfolge besteht.

- oder -

input enthält Memberdefinitionen, die für den Typ T nicht verfügbar sind.

input ist null.

input enthält eine "__type"-Eigenschaft, die einen benutzerdefinierten Typ angibt, jedoch kann der dem Serialisierungsprogramm zugeordnete Typresolver keinen zugehörigen verwalteten Typ finden.

- oder -

input enthält eine "__type"-Eigenschaft, die einen benutzerdefinierten Typ angibt, jedoch kann das Deserialisierungsergebnis für die entsprechende JSON-Zeichenfolge nicht dem zugehörigen Zieltyp zugewiesen werden.

- oder -

input enthält eine "__type"-Eigenschaft, die Object oder einen nicht instanziierbaren Typ angibt (z. B. einen abstrakten Typ oder eine Schnittstelle).

- oder -

Es wurde versucht, ein JSON-Array in einen arrayähnlichen verwalteten Typ zu konvertieren, der als JSON-Deserialisierungsziel nicht unterstützt wird.

- oder -

Es ist nicht möglich, input in T zu konvertieren.

Beispiele

Das folgende Beispiel enthält eine einfache Abbildung zum Serialisieren und Deserialisieren von Datenobjekten.

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

Es ist eine Klasse namens Personerforderlich, die im folgenden Beispiel gezeigt wird.

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

Hinweise

Die Deserialize -Methode entspricht zunächst der Verwendung der DeserializeObject -Methode zum Abrufen eines Objektgraphen und dem anschließenden Versuch, das Ergebnis in den Typ zu umwandeln T.

Während der Deserialisierung wird auf den aktuellen Typkonfliktlöser des Serialisierers verwiesen, der den verwalteten Typ bestimmt, der beim Konvertieren von Elementen verwendet werden soll, die in Arrays und Wörterbuchtypen geschachtelt sind. Daher durchläuft der Deserialisierungsprozess alle geschachtelten Elemente von input. Weitere Informationen zu Typrelösern finden Sie in der JavaScriptTypeResolver -Klasse.

Gilt für: