2011-11-07 23 views
9

JSON文字列をオブジェクトに逆シリアル化しています。 JSON内部が複雑なので、Dictionary<string, string>は使用できません。私はDictionary<string, dynamic>について知っていますが、私は.NET 3.5フレームワークを使っていますので、dynamicは使用できません。JSONをオブジェクトに逆シリアル化する

だから私はここで終わった:

object json = new JavaScriptSerializer().Deserialize<object>("myjson"); 

しかし、私は反射せずにjsonにアクセスする方法を参照してくださいません。任意のヒント?

+0

私はこのドメインに慣れていないので、愚かな質問だとお詫びします...しかし、なぜあなたは 'json.html'にアクセスするためにリフレクションを使用できませんか? –

+1

私は使うことができますが、私はあなたが何かの些細なことの真ん中で反射を使って自分自身を見れば、何か間違っていると思います。この場合、私はイムと思う。 –

答えて

14

ServiceStack.Textを使用し、JsonObject.Parseを使用して解析します。

次に、読みやすいデータの辞書があります。

ServiceStackはで、Json.NETよりも速く、より良いです。

1

JSON.NETが人気のJSONシリアライズライブラリである、それはJSON to/fromあなたが入力したオブジェクトをシリアル化することを可能にするだけでなく、あなたがの構造を知っていないときのために(JObject class経由)のメタ構造の表現を入力取得しますあなたのJSON

.NETが何度もJSONのためにすぐに提供する製品よりも優れていることがわかりました。あなたが拡張メソッドを使用する場合には、より簡潔だ

var dictionary = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(myJson); 

11

これは、同じように簡単にServiceStack's JsonSerializerで行うことができます

var dictionary = myJson.FromJson<Dictionary<string,string>>(); 

そうでなければ、あなたは、動的APIを使用することができます好む場合:

var jsonObj = JsonObject.Parse(myJson); 
var value = jsonObj.Get("key"); 

ここでは、differenを示す2つの現実世界の使用法がありますあなたは.NET's fastest JSON serializer :)

ServiceStackのJSONシリアライザをされて使用することがありますボーナスとして

:トンの方法あなたは、動的なJSONペイロードをデシリアライズすることができますNuGetでダウンロードするには、

PM> Install-Package ServiceStack.Text 
+0

こんにちはDemis、 私はいくつか質問があります 1.大きなjsonファイルを解析するには、ストリーミングJson解析オプションがありますか? 2. Jsonが角括弧[]の中に埋め込まれている場合、解析を失敗するメソッドがありますか? – Gokul

+0

1)No.2)私はこの例を理解していませんが、利用可能なすべての解析フック+カスタマイズは 'JsConfig'と' JsConfig ' – mythz

+0

ありがとう、デミスです。私は次のエラーが発生しました "SerializationException:型定義は、シリアル化された型 'RootObject'で始まる '{'で始める必要があります:]で始まるjsonオブジェクトを解析しようとしたときに[Link-here](http:// pastebin.com/WZTSbYNJ)。ファイル内の最初の文字(および最後の文字)を削除すると、正常に解析できます。 – Gokul

関連する問題