2012-04-28 6 views
1

私はJSON文字列を解析する方法を探していましたが、私はこれら2つの方法に遭遇しました。キャストとC#での型の指定

class Test { 

     String test; 

     String getTest() { return test; } 
     String setTest(String test) { test = test; } 

    } 

var ser = new JavaScriptSerializer(); 
Test abc = (Test)ser.DeserializeObject("{ \"test\":\"some data\" }"); 

var ser = new JavaScriptSerializer(); 
Test abc = ser.Deserialize<Test>("{ \"test\":\"some data\" }"); 

最初のものは、型にオブジェクトをキャストされ、2つ目のタイプを指定するのですか?それらの間の本当の違いは何ですか? 1つの方法がより好ましいか?

答えて

3

2番目のオプション(一般的なDeserialize<T>メソッドを使用)は、特定のタイプを想定している特定の例に適しています。

入力が期待するタイプのオブジェクトを表していない場合、両方ともわずかに異なる結果をもたらします。最初のケースでは、キャストでInvalidCastExceptionが発生し、2番目のケースではDeserializeメソッドがInvalidOperationExceptionをスローします。しかし、それ以外の、実際にはパフォーマンスなどの面では差the documentation for Deserialize<T>状態これはありません。

デシリアライズ方法は、第1のオブジェクトグラフを取得するためにDeserializeObjectメソッドを使用して、その後、結果をキャストしようと等価ですTと入力する。

3

いいえ、最初の1つの目的は、結果のタイプが不明な場合でも、デシリアライズを実行できるようにすることだけです。 (2つ目はあなたのために自動的にキャストを行います)しかし、実質的な違いはありません。

関連する問題