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
| Name | Description |
|---|---|
| Deserialize(String, Type) |
JSON biçimli bir 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 bir 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 çıkarmak için JSON dizesi.
- targetType
- Type
Sonuçta elde edilen nesnenin türü.
Döndürülenler
Seri durumdan çıkarılmış nesne.
Özel durumlar
input, null'e eşittir.
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çerir.
-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 kullanılamayan ü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şkilendirilmiş tür çözümleyicisi ilgili 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 dizesini seri durumdan çıkarmanı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-
JSON dizisini, seri durumdan çıkarma hedefi olarak kullanılması 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 grafiğinin kökünü yöntemin yaptığı gibi belirli bir türe dönüştürmeyi Deserialize denemez.
Şunlara uygulanır
Deserialize<T>(String)
Belirtilen JSON dizesini türünde Tbir 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
input Uzunluk değerini MaxJsonLengthaşıyor.
-veya-
tarafından RecursionLimit tanımlanan özyineleme sınırı aşıldı.
-veya-
input beklenmeyen bir karakter dizisi içerir.
-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 Tkullanılamayan üye tanımlarını içerir.
input, null'e eşittir.
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 dizesini seri durumdan çıkarmanın sonucu beklenen hedef türüne atanamaz.
-veya-
input veya ö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-
JSON dizisini, seri durumdan çıkarma hedefi olarak kullanılması desteklenmeyen dizi benzeri yönetilen türe dönüştürme girişiminde bulunuldu.
-veya-
öğesine dönüştürmek inputTmümkün değildir.
Örnekler
Aşağıdaki örnek, veri nesnelerini seri hale getirme ve seri durumdan çıkarma işleminin basit bir çizimini 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ı Personbir 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 etmek ve ardından sonucu türüne Tdönüştürmeye çalışmakla 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ş öğeler dönüştürülürken kullanılacak yönetilen türü belirler. Sonuç olarak, seri durumdan çıkarma işlemi tüm iç içe geçmiş öğeleri inputarasında yinelenir. Tür çözümleyicileri hakkında daha fazla bilgi için sınıfına JavaScriptTypeResolver bakın.