JavaScriptSerializer.Deserialize Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ü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 |
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
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.