JavaScriptSerializer.Deserialize メソッド

定義

オーバーロード

名前 説明
Deserialize(String, Type)

JSON 形式の文字列を、指定した型のオブジェクトに変換します。

Deserialize<T>(String)

指定した JSON 文字列を、 T型のオブジェクトに変換します。

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

結果のオブジェクトの型。

返品

逆シリアル化されたオブジェクト。

例外

inputnullです。

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 文字列。

返品

T

逆シリアル化されたオブジェクト。

例外

inputの長さがMaxJsonLengthの値を超えています。

-又は-

RecursionLimitによって定義された再帰の制限を超えました。

-又は-

input には予期しない文字シーケンスが含まれています。

-又は-

input はディクショナリ型で、文字列以外のキー値が見つかりました。

-又は-

input には、型 Tで使用できないメンバー定義が含まれています。

inputnullです。

input には、カスタム型を示す "__type" プロパティが含まれていますが、シリアライザーに関連付けられている型リゾルバーは、対応するマネージド型を見つけることができません。

-又は-

input には、カスタム型を示す "__type" プロパティが含まれていますが、対応する JSON 文字列を逆シリアル化した結果を、想定されるターゲット型に割り当てることはできません。

-又は-

input には、 Object またはインスタント不可能な型 (抽象型やインターフェイスなど) を示す "__type" プロパティが含まれています。

-又は-

JSON 配列を、JSON 逆シリアル化ターゲットとして使用するためにサポートされていない配列のようなマネージド型に変換しようとしました。

-又は-

inputTに変換することはできません。

次の例では、データ オブジェクトをシリアル化および逆シリアル化する方法の簡単な図を示します。

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 クラスを参照してください。

適用対象