JavaScriptSerializer.Deserialize Metódus

Definíció

Túlterhelések

Name Description
Deserialize(String, Type)

JSON formátumú sztringet konvertál a megadott típusú objektummá.

Deserialize<T>(String)

A megadott JSON-sztringet típusobjektummá Talakítja.

Deserialize(String, Type)

JSON formátumú sztringet konvertál a megadott típusú objektummá.

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

Paraméterek

input
String

A deszerializálandó JSON-sztring.

targetType
Type

Az eredményként kapott objektum típusa.

Válaszok

A deszerializált objektum.

Kivételek

input az null.

A hossz input meghaladja a következő értékét MaxJsonLength: .

-vagy-

Túllépte a rekurziós korlátot RecursionLimit .

-vagy-

input váratlan karaktersorozatot tartalmaz.

-vagy-

input egy szótártípus, és nem sztringkulcs-érték történt.

-vagy-

input olyan tagdefiníciókat tartalmaz, amelyek nem érhetők el a céltípuson.

input Egyéni típust jelző "__type" tulajdonságot tartalmaz, de a szerializálóhoz jelenleg társított típusfeloldó nem talál megfelelő felügyelt típust.

-vagy-

input egyéni típust jelző "__type" tulajdonságot tartalmaz, de a megfelelő JSON-sztring deszerializálásának eredménye nem rendelhető hozzá a várt céltípushoz.

-vagy-

input egy "__type" tulajdonságot tartalmaz, amely vagy Object nem példányosítható típust (például absztrakt típust vagy felületet) jelez.

-vagy-

Kísérletet tettek arra, hogy egy JSON-tömböt tömbszerű felügyelt típussá alakítson át, amely nem támogatott JSON deszerializálási célként való használatra.

-vagy-

Nem konvertálható input céltípusra.

Megjegyzések

Ez a deszerializálási módszer nem próbálja az objektumgráf gyökerét egy adott típusra vetíteni, ahogyan a Deserialize metódus teszi.

A következőre érvényes:

Deserialize<T>(String)

A megadott JSON-sztringet típusobjektummá Talakítja.

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

Típusparaméterek

T

Az eredményként kapott objektum típusa.

Paraméterek

input
String

A deszerializálandó JSON-sztring.

Válaszok

T

A deszerializált objektum.

Kivételek

A input hossz meghaladja a következő értékét MaxJsonLength: .

-vagy-

Túllépte a rekurziós korlátot RecursionLimit .

-vagy-

input váratlan karaktersorozatot tartalmaz.

-vagy-

input egy szótártípus, és nem sztringkulcs-érték történt.

-vagy-

input olyan tagdefiníciókat tartalmaz, amelyek nem érhetők el a típuson T.

input az null.

input egyéni típust jelző "__type" tulajdonságot tartalmaz, de a szerializálóhoz társított típusfeloldó nem talál megfelelő felügyelt típust.

-vagy-

input egyéni típust jelző "__type" tulajdonságot tartalmaz, de a megfelelő JSON-sztring deszerializálásának eredménye nem rendelhető hozzá a várt céltípushoz.

-vagy-

input olyan "__type" tulajdonságot tartalmaz, amely vagy Object nem példányosítható típust (például absztrakt típust vagy felületet) jelez.

-vagy-

Kísérletet tettek arra, hogy egy JSON-tömböt tömbszerű felügyelt típussá alakítson át, amely nem támogatott JSON deszerializálási célként való használatra.

-vagy-

A konvertálás inputTnem lehetséges.

Példák

Az alábbi példa egy egyszerű illusztrációt nyújt az adatobjektumok szerializálására és deszerializálására.

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

Ehhez egy nevesített Personosztályra van szükség, amely az alábbi példában látható.

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

Megjegyzések

A Deserialize metódus egyenértékű azzal, hogy először egy objektumgráf beszerzésére használja a DeserializeObject metódust, majd megpróbálja begépelni Taz eredményt.

A deszerializálás során a szerializáló aktuális típusfeloldójára hivatkozunk, amely meghatározza a tömbökben és szótártípusokban beágyazott elemek konvertálásához használni kívánt felügyelt típust. Ennek eredményeképpen a deszerializálási folyamat a input. A típusfeloldókkal kapcsolatos további információkért tekintse meg az osztályt JavaScriptTypeResolver .

A következőre érvényes: