次の方法で共有


JavaScriptSerializer.ConvertToType メソッド

定義

オーバーロード

ConvertToType(Object, Type)

指定したオブジェクトを指定した型に変換します。

ConvertToType<T>(Object)

指定したオブジェクトを指定した型に変換します。

ConvertToType(Object, Type)

指定したオブジェクトを指定した型に変換します。

public:
 System::Object ^ ConvertToType(System::Object ^ obj, Type ^ targetType);
public object ConvertToType (object obj, Type targetType);
member this.ConvertToType : obj * Type -> obj
Public Function ConvertToType (obj As Object, targetType As Type) As Object

パラメーター

obj
Object

変換対象のオブジェクト。

targetType
Type

オブジェクトの変換後の型。

戻り値

Object

シリアル化された JSON 文字列。

例外

生成される JSON 形式の文字列が、MaxJsonLength 値を超えています。

  • または - obj に循環参照が含まれています。 循環参照は、子オブジェクトが親オブジェクトへの参照を持ち、親オブジェクトがその子オブジェクトへの参照を持つ場合に発生します。

RecursionLimit で定義された再帰制限を超えています。

注釈

インスタンスが JavaScriptSerializer カスタム コンバーターが登録されている型をシリアル化する場合、シリアライザーはメソッドを Serialize 呼び出して、JSON 形式の文字列に変換される名前と値のペアのディクショナリを取得します。

このメソッドは Serialize 、オブジェクト グラフが複雑すぎる場合や、登録済みのインスタンスがコンバーター再帰を JavaScriptConverter 引き起こした場合にも例外をスローできます。

適用対象

ConvertToType<T>(Object)

指定したオブジェクトを指定した型に変換します。

public:
generic <typename T>
 T ConvertToType(System::Object ^ obj);
public T ConvertToType<T> (object obj);
member this.ConvertToType : obj -> 'T
Public Function ConvertToType(Of T) (obj As Object) As T

型パラメーター

T

obj の変換後の型。

パラメーター

obj
Object

変換対象のオブジェクト。

戻り値

T

ターゲットの型に変換されたオブジェクト。

例外

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

  • または - obj (または obj の入れ子にされたメンバー) にはカスタムの型を示す "__type" プロパティが含まれていますが、対応する JSON 文字列を逆シリアル化した結果を指定のターゲットの型に代入できません。

  • または - obj (または obj の入れ子にされたメンバー) には、Object またはインスタンス化できない型 (抽象型やインターフェイスなど) を示す "__type" プロパティが含まれています。

  • または - obj を配列のようなマネージド型に変換しようとしました。このような型を変換先の型として逆シリアル化を実行することはできません。

  • または - objT に変換することはできません。

obj はディクショナリ型であり、文字列ではないキー値が検出されました。

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

次の例は、このメソッドを ConvertToType 使用して、コンバーターに渡されるディクショナリ内の値からオブジェクトを取得 ListItem する方法を示しています。 このコード例は、JavaScriptSerializer クラスのために提供されている大規模な例の一部です。

ArrayList itemsList = (ArrayList)dictionary["List"];
for (int i=0; i<itemsList.Count; i++)
    list.Add(serializer.ConvertToType<ListItem>(itemsList[i]));
Dim itemsList As ArrayList = CType(dictionary("List"), ArrayList)
Dim i As Integer
For i = 0 To itemsList.Count - 1
    list.Add(serializer.ConvertToType(Of ListItem)(itemsList(i)))
Next i

注釈

このメソッドは ConvertToType 、表される obj オブジェクト インスタンスを型 Tのインスタンスに変換しようとします。 この変換中に、オブジェクト参照の等価性が維持される保証はありません。 したがって、同じオブジェクトを obj 想定して T 参照することはできません。

ConvertToType は、派生 JavaScriptConverter元のクラスを実装する場合に使用することを目的としています。 コンバーター コードは、シリアライザーが渡すディクショナリ内の値を取得し、その値を型 Tのインスタンスに変換できる必要があります。 カスタム変換コードを再実装してこのタスクを実行する代わりに、コンバーター コードからメソッドを ConvertToType 呼び出すことができます。

適用対象