JavaScriptSerializer.Deserialize Methode

Definition

Überlädt

Name Beschreibung
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 des Werts input überschreitet den Wert von MaxJsonLength.

-oder-

Die von ihnen definierte RecursionLimit Rekursionsgrenze wurde überschritten.

-oder-

input enthält eine unerwartete Zeichensequenz.

-oder-

input ist ein Wörterbuchtyp, und es wurde ein Nicht-Zeichenfolgenschlüsselwert gefunden.

-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, aber der typlöser, der derzeit dem Serializer zugeordnet ist, kann keinen entsprechenden verwalteten Typ finden.

-oder-

input enthält eine Eigenschaft "__type", die einen benutzerdefinierten Typ angibt, aber das Ergebnis der Deserialisierung der entsprechenden JSON-Zeichenfolge kann dem erwarteten Zieltyp nicht zugewiesen werden.

-oder-

input enthält eine Eigenschaft "__type", die einen 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 für die Verwendung als JSON-Deserialisierungsziel nicht unterstützt wird.

-oder-

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

Hinweise

Diese Deserialisierungsmethode versucht nicht, den Stamm des Objektdiagramms in einen bestimmten Typ zu umwandeln, wie die Deserialize Methode funktioniert.

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 JSON-Zeichenfolge, die deserialisiert werden soll.

Gibt zurück

T

Das deserialisierte Objekt.

Ausnahmen

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

-oder-

Die von ihnen definierte RecursionLimit Rekursionsgrenze wurde überschritten.

-oder-

input enthält eine unerwartete Zeichensequenz.

-oder-

input ist ein Wörterbuchtyp, und es wurde ein Nicht-Zeichenfolgenschlüsselwert gefunden.

-oder-

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

input ist null.

input enthält eine Eigenschaft "__type", die einen benutzerdefinierten Typ angibt, aber der dem Serializer zugeordnete Typ resolver kann keinen entsprechenden verwalteten Typ finden.

-oder-

input enthält eine Eigenschaft "__type", die einen benutzerdefinierten Typ angibt, aber das Ergebnis der Deserialisierung der entsprechenden JSON-Zeichenfolge kann dem erwarteten Zieltyp nicht zugewiesen werden.

-oder-

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

-oder-

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

-oder-

Es ist nicht möglich, in inputT.

Beispiele

Das folgende Beispiel zeigt eine einfache Abbildung, wie Datenobjekte serialisiert und deserialisiert werden.

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

Sie erfordert eine Klasse mit dem Namen Person, die im folgenden Beispiel dargestellt 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 zuerst der Verwendung der DeserializeObject Methode zum Abrufen eines Objektdiagramms und dem Versuch, das Ergebnis in den Typ Tzu umwandeln.

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

Gilt für: