web-dev-qa-db-ja.com

JSON文字列を解析してオブジェクトにする最も簡単なC#関数は何ですか?

JSON文字列を解析してオブジェクトに表示する最も簡単なC#関数(C#XAML WPF)とは何ですか? (たとえば、2つの配列を持つオブジェクト-arrAおよびarrB)

50
Rella
DataContractJsonSerializer serializer = 
    new DataContractJsonSerializer(typeof(YourObjectType));

YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);

JavaScriptSerializerを使用することもできますが、DataContractJsonSerializerは複雑な型をより適切に処理できると考えられます。

奇妙なことに、JavaScriptSerializerは一度廃止され(3.5で)、その後ASP.NET MVC(3.5 SP1で)により復活しました。それは間違いなく私の自信を揺るがし、DataContractJsonSerializerを使用するように導いてくれるでしょう。

38
Justin Niessner

Json.NET ライブラリを使用するだけです。 Json形式の文字列を非常に簡単に解析できます。

JObject o = JObject.Parse(@"
{
    ""something"":""value"",
    ""jagged"":
    {
        ""someother"":""value2""
    }
}");

string something = (string)o["something"];

ドキュメント:JObject.Parseを使用したJSONオブジェクトの解析

60

私はこれがあなたが望むものだと思う:

JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
18
Rbacarin

JSONキーを表す構造を作成して(正確に知っている場合)、JSON文字列を構造に簡単に逆シリアル化できます。私の例では、Google Cloud Messageサーバーからの応答をデシリアライズしました:

class templateResponse
{
    public String multicast_id;
    public String success;
    public String failure;
    public String canonical_ids;
    public Result[] results;

    public class Result
    {
        public String message_id;
        public String registration_id;
        public String error;
    };
}

着信JSONは:

"\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"}]}"

だから、使用する

templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);

そして、デシリアライズされたresultオブジェクトを取得します

5
Subtle Fox

JSON応答をXMLドキュメントに変換できるJson.NETライブラリをエコーし​​ます。 XMLドキュメントを使用すると、XPathで簡単にクエリを実行し、必要なデータを抽出できます。これはとても便利だと思います。

2
George Ivanov