JavaScriptSerializer.Deserialize Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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á |
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
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 .