JavaScriptSerializer.Deserialize Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
| Nazwa | Opis |
|---|---|
| Deserialize(String, Type) |
Konwertuje ciąg w formacie JSON na obiekt określonego typu. |
| Deserialize<T>(String) |
Konwertuje określony ciąg JSON na obiekt typu |
Deserialize(String, Type)
Konwertuje ciąg w formacie JSON na obiekt określonego typu.
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
Parametry
- input
- String
Ciąg JSON do deserializacji.
- targetType
- Type
Typ wynikowego obiektu.
Zwraca
Obiekt deserializowany.
Wyjątki
Parametr input ma wartość null.
Długość parametru input przekracza wartość MaxJsonLength.
— lub —
Przekroczono limit rekursji zdefiniowany przez RecursionLimit element .
— lub —
input zawiera nieoczekiwaną sekwencję znaków.
— lub —
input jest typem słownika i napotkano wartość klucza innego niż ciąg.
— lub —
input zawiera definicje elementów członkowskich, które nie są dostępne w typie docelowym.
input zawiera właściwość "__type", która wskazuje typ niestandardowy, ale program rozpoznawania typów, który jest obecnie skojarzony z serializatorem, nie może odnaleźć odpowiedniego typu zarządzanego.
— lub —
input zawiera właściwość "__type", która wskazuje typ niestandardowy, ale wynik deserializacji odpowiedniego ciągu JSON nie może być przypisany do oczekiwanego typu docelowego.
— lub —
input zawiera właściwość "__type", która wskazuje lub Object typ niemożliwy do utworzenia wystąpienia (na przykład typ abstrakcyjny lub interfejs).
— lub —
Podjęto próbę przekonwertowania tablicy JSON na typ zarządzany podobny do tablicy, który nie jest obsługiwany do użycia jako cel deserializacji JSON.
— lub —
Nie można przekonwertować input na typ docelowy.
Uwagi
Ta metoda deserializacji nie próbuje rzutować katalogu głównego grafu obiektu na określony typ, sposób, w Deserialize jaki metoda wykonuje.
Dotyczy
Deserialize<T>(String)
Konwertuje określony ciąg JSON na obiekt typu 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
Parametry typu
- T
Typ wynikowego obiektu.
Parametry
- input
- String
Ciąg JSON do deserializacji.
Zwraca
Obiekt deserializowany.
Wyjątki
Długość input przekracza wartość MaxJsonLength.
— lub —
Przekroczono limit rekursji zdefiniowany przez RecursionLimit element .
— lub —
input zawiera nieoczekiwaną sekwencję znaków.
— lub —
input jest typem słownika i napotkano wartość klucza innego niż ciąg.
— lub —
input zawiera definicje składowych, które nie są dostępne w typie T.
Parametr input ma wartość null.
input zawiera właściwość "__type", która wskazuje typ niestandardowy, ale program rozpoznawania typów skojarzony z serializatorem nie może odnaleźć odpowiedniego typu zarządzanego.
— lub —
input zawiera właściwość "__type", która wskazuje typ niestandardowy, ale wynik deserializacji odpowiedniego ciągu JSON nie może być przypisany do oczekiwanego typu docelowego.
— lub —
input zawiera właściwość "__type", która wskazuje Object typ lub niemożliwy do utworzenia wystąpienia (na przykład typy abstrakcyjne lub interfejs).
— lub —
Podjęto próbę przekonwertowania tablicy JSON na typ zarządzany podobny do tablicy, który nie jest obsługiwany do użycia jako cel deserializacji JSON.
— lub —
Nie można przekonwertować input na T.
Przykłady
Poniższy przykład przedstawia prostą ilustrację sposobu serializacji i deserializacji obiektów danych.
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
Wymaga klasy o nazwie Person, która jest pokazana w poniższym przykładzie.
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
Uwagi
Metoda jest równoważna Deserialize pierwszemu użyciu DeserializeObject metody w celu uzyskania grafu obiektu, a następnie próby rzutowania wyniku na typ T.
Podczas deserializacji przywoływane jest bieżące rozpoznawanie typów serializatora, który określa typ zarządzany do użycia podczas konwertowania elementów, które są zagnieżdżone wewnątrz tablic i typów słowników. W rezultacie proces deserializacji iteruje wszystkie zagnieżdżone elementy elementu input. Aby uzyskać więcej informacji na temat rozpoznawania typów, zobacz klasę JavaScriptTypeResolver .