2011-02-08 9 views
1

私はC#を使用しています。C#2.0を使用してJSONシリアライザ/デシリアライザクラスを作成するには

今、JSON文字列データをシリアル化および逆シリアル化する「JSONHelper」クラスを作成したいと考えています。私の現在のシナリオでは、JSON型を返すWebサービスからフォーマット文字列の下に来ています。

文字列JSON型のデータを返すWebサービスメソッドを呼び出すC#コードにメソッドがあります。下記の例を参照してください。

string userDetails = myWebService.GetMember(username, Password, out Result); 

のでuserDetails値は

{"FullName":"Manoj Singh","username":"Manoj","Miles":2220,"TierStatus":"Gold","TierMiles":23230,"MilesExpiry":12223,"ExpiryDate":"31 January 2011","PersonID":232323,"AccessToken":"sfs23232s232","ActiveCardNo":"232323223"} 

は、今、私がした方法は、シリアライズとJSONの文字列型をデシリアライズし、値の辞書の種類を返しますすることがあるでしょうJSONHelperクラスを書きたいです。

+0

なぜ車輪を改造するのですか? Newtonsoft.json(http://james.newtonking.com/pages/json-net.aspx)はこのようなシナリオを処理できます。 – xandy

+0

サードパーティのライブラリは必要ありません。 FCLには、JSONセリライザ/デシリアライザが含まれています。 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx。あなたがまだあなた自身を作りたいと思っている - 具体的な質問はありますか?それとも、どうすればいいのですか? –

+0

@Jamesを参照してください私は私のWebサービスから何を得ているのか上記のシナリオを与えましたが、JSONDeserializer sotにその文字列を渡してオブジェクトのDictionary型を返すようにしたいと思います。 –

答えて

-1

あなたはSystem.Web.Script.Serialization名前空間でJavaScriptSerializerクラスを使用することができます:あなたのjsonStringを想定し

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
object result = jsonSerializer.DeserializeObject(jsonString); 

が、これは辞書を返す必要がありますオブジェクトを表します。しかし、あなたはそれがjsonリストを与える場合、例えばIEnumerableを返さないという保証はないので、型を慎重にチェックする必要があります。

より良いまだあなたが強く、逆シリアル化を入力し使用することができます。

http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx

あなたのWebメソッドの戻り値の署名を知っている場合、これははるかに良い解決策です。

+0

System.Web.Script.Serializationを取得していません私の名前空間は、.NET2.0を使用していることに注意してください。あなたのウェブメソッドのリターンシグネチャを知っていれば、これははるかに優れたソリューションです。" –

+0

.NET 3.5からSystem.Web.Extensionsアセンブリをソリューションに追加してこの機能を使用する必要があります。.NET 2.0と3.5は同じ基本となる仮想マシン上で実行されます(つまり、コンパイラは同じです)。私はあなたが特定の形式のjsonオブジェクトを常に返すことを知っていたことを意味しました。しかし、私はDataContractJsonSerializerが除外されていると思いますあなたはちょうど2.0で立ち往生した。 –

0

http://json.codeplex.com/を見ましたか?

私はこれを使用してjson.netが非常に良いと判断しました。どうしてあなた自身のことを書いておきたいのか分かりません。

+0

JSONのシリアライズとデシリアライズのための小規模なクラスの問題はありますか?私は自分のプロジェクトに他のコードを組み込みましたが、私の会社はこれを許可しません。 –