JavaScriptSerializer.Deserialize メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Deserialize(String, Type) |
JSON 形式の文字列を指定した型のオブジェクトに変換します。 |
Deserialize<T>(String) |
指定した JSON 文字列を指定した型 |
Deserialize(String, Type)
JSON 形式の文字列を指定した型のオブジェクトに変換します。
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
パラメーター
- input
- String
逆シリアル化する JSON 文字列。
- targetType
- Type
生成されるオブジェクトの型。
戻り値
逆シリアル化されたオブジェクト。
例外
input
が null
です。
input
の長さが MaxJsonLength の値を超えています。
- または -
RecursionLimit で定義された再帰制限を超えています。
- または -
input
パラメーターに予期しない文字シーケンスが含まれています。
- または -
input
はディクショナリ型であり、文字列ではないキー値が検出されました。
- または -
input
には、変換先の型に使用できないメンバー定義が含まれています。
input
にはカスタムの型を示す "__type" プロパティが含まれていますが、シリアライザーに現在関連付けられている型リゾルバーは対応するマネージド型を見つけることができません。
- または -
input
にはカスタムの型を示す "__type" プロパティが含まれていますが、対応する JSON 文字列を逆シリアル化した結果を指定のターゲットの型に代入できません。
- または -
input
には、Object またはインスタンス化できない型 (抽象型やインターフェイスなど) を示す "__type" プロパティが含まれています。
- または -
JSON 配列を、JSON の逆シリアル化のターゲットとして使用できない、配列のようなマネージド型に変換しようとしました。
- または -
input
をターゲットの型に変換できません。
注釈
この逆シリアル化メソッドは、オブジェクト グラフのルートをメソッドの方法である特定の型に Deserialize キャストしようとはしません。
適用対象
Deserialize<T>(String)
指定した JSON 文字列を指定した型 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
型パラメーター
- T
生成されるオブジェクトの型。
パラメーター
- input
- String
逆シリアル化する JSON 文字列。
戻り値
逆シリアル化されたオブジェクト。
例外
input
の長さが MaxJsonLength の値を超えています。
- または -
RecursionLimit で定義された再帰制限を超えています。
- または -
input
パラメーターに予期しない文字シーケンスが含まれています。
- または -
input
はディクショナリ型であり、文字列ではないキー値が検出されました。
- または -
input
には、型 T
に使用できないメンバー定義が含まれています。
input
が null
です。
input
にはカスタムの型を示す "__type" プロパティが含まれていますが、シリアライザーに関連付けられた型リゾルバーは対応するマネージド型を見つけることができません。
- または -
input
にはカスタムの型を示す "__type" プロパティが含まれていますが、対応する JSON 文字列を逆シリアル化した結果を指定のターゲットの型に代入できません。
- または -
input
には、Object またはインスタンス化できない型 (抽象型やインターフェイスなど) を示す "__type" プロパティが含まれています。
- または -
JSON 配列を、JSON の逆シリアル化のターゲットとして使用できない、配列のようなマネージド型に変換しようとしました。
- または -
input
を T
に変換することはできません。
例
次の例では、データ オブジェクトをシリアル化および逆シリアル化する方法の簡単な図を示します。
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
次の例に示すように、 という名前 Person
のクラスが必要です。
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
注釈
メソッドは Deserialize 、最初に メソッドを DeserializeObject 使用してオブジェクト グラフを取得し、結果を 型 T
にキャストするのと同じです。
逆シリアル化中に、シリアライザーの現在の型リゾルバーが参照されます。これにより、配列とディクショナリ型内で入れ子になった要素を変換するときに使用するマネージド型が決定されます。 その結果、逆シリアル化プロセスは、 のすべての入れ子になった要素 input
を反復処理します。 型リゾルバーの詳細については、 クラスを JavaScriptTypeResolver 参照してください。
適用対象
.NET