JavaScriptSerializer.Deserialize Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
Deserialize(String, Type) |
JSON biçimli dizeyi belirtilen türde bir nesneye dönüştürür. |
Deserialize<T>(String) |
Belirtilen JSON dizesini türünde |
Deserialize(String, Type)
JSON biçimli dizeyi belirtilen türde bir nesneye dönüştürür.
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
Parametreler
- input
- String
Seri durumdan çıkarılacak JSON dizesi.
- targetType
- Type
Sonuçta elde edilen nesnenin türü.
Döndürülenler
Seri durumdan çıkarılmış nesne.
Özel durumlar
input
, null
değeridir.
uzunluğu input
değerini MaxJsonLengthaşıyor.
-veya-
tarafından RecursionLimit tanımlanan özyineleme sınırı aşıldı.
-veya-
input
beklenmeyen bir karakter dizisi içeriyor.
-veya-
input
bir sözlük türüdür ve dize olmayan bir anahtar değeriyle karşılaşıldı.
-veya-
input
hedef türünde bulunmayan üye tanımlarını içerir.
input
özel bir türü gösteren bir "__type" özelliği içerir, ancak şu anda seri hale getiriciyle ilişkili tür çözümleyici karşılık gelen yönetilen türü bulamaz.
-veya-
input
özel bir türü gösteren bir "__type" özelliği içerir, ancak karşılık gelen JSON dizesinin seri durumdan çıkarılmasının sonucu beklenen hedef türüne atanamaz.
-veya-
input
örneği başlatılamayan bir türü (örneğin, soyut bir tür veya arabirim) gösteren Object bir "__type" özelliği içerir.
-veya-
Bir JSON dizisini, JSON seri durumdan çıkarma hedefi olarak kullanılmak üzere desteklenmeyen dizi benzeri yönetilen türe dönüştürme girişiminde bulunuldu.
-veya-
Hedef türe dönüştürmek input
mümkün değildir.
Açıklamalar
Bu seri durumdan çıkarma yöntemi, nesne grafının kökünü yöntemin yaptığı gibi belirli bir türe dönüştürmeye Deserialize çalışmaz.
Şunlara uygulanır
Deserialize<T>(String)
Belirtilen JSON dizesini türünde T
bir nesneye dönüştürür.
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ür Parametreleri
- T
Sonuçta elde edilen nesnenin türü.
Parametreler
- input
- String
Seri durumdan çıkarılacak JSON dizesi.
Döndürülenler
Seri durumdan çıkarılmış nesne.
Özel durumlar
Uzunluk input
değerini MaxJsonLengthaşıyor.
-veya-
tarafından RecursionLimit tanımlanan özyineleme sınırı aşıldı.
-veya-
input
beklenmeyen bir karakter dizisi içeriyor.
-veya-
input
bir sözlük türüdür ve dize olmayan bir anahtar değeriyle karşılaşıldı.
-veya-
input
, türünde T
kullanılamayan üye tanımlarını içerir.
input
, null
değeridir.
input
özel bir türü gösteren bir "__type" özelliği içerir, ancak seri hale getiriciyle ilişkili tür çözümleyici karşılık gelen yönetilen türü bulamıyor.
-veya-
input
özel bir türü gösteren bir "__type" özelliği içerir, ancak karşılık gelen JSON dizesinin seri durumdan çıkarılmasının sonucu beklenen hedef türüne atanamaz.
-veya-
input
örneği başlatılamayan bir türü (örneğin, soyut türler veya arabirim) gösteren Object bir "__type" özelliği içerir.
-veya-
Bir JSON dizisini, JSON seri durumdan çıkarma hedefi olarak kullanılmak üzere desteklenmeyen dizi benzeri yönetilen türe dönüştürme girişiminde bulunuldu.
-veya-
'a dönüştürmek input
T
mümkün değildir.
Örnekler
Aşağıdaki örnek, veri nesnelerini seri hale getirme ve seri durumdan çıkarma hakkında basit bir çizim sağlar.
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
Aşağıdaki örnekte gösterilen adlı Person
bir sınıf gerektirir.
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
Açıklamalar
Deserialize yöntemi, önce yöntemini kullanarak bir nesne grafı DeserializeObject elde etme ve ardından sonucu türüne T
dönüştürmeye çalışma ile eşdeğerdir.
Seri durumdan çıkarma sırasında seri hale getiricinin geçerli tür çözümleyicisine başvurulur ve bu da dizilerin ve sözlük türlerinin içinde iç içe yerleştirilmiş öğeleri dönüştürürken kullanılacak yönetilen türü belirler. Sonuç olarak, seri durumdan çıkarma işlemi tüm iç içe geçmiş öğeleri input
arasında yinelenir. Tür çözümleyicileri hakkında daha fazla bilgi için sınıfına JavaScriptTypeResolver bakın.