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
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 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
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 Person
erforderlich, 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.