JSON文字列を解析してオブジェクトに表示する最も簡単なC#関数(C#XAML WPF)とは何ですか? (たとえば、2つの配列を持つオブジェクト-arrAおよびarrB)
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(YourObjectType));
YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);
JavaScriptSerializer
を使用することもできますが、DataContractJsonSerializer
は複雑な型をより適切に処理できると考えられます。
奇妙なことに、JavaScriptSerializerは一度廃止され(3.5で)、その後ASP.NET MVC(3.5 SP1で)により復活しました。それは間違いなく私の自信を揺るがし、DataContractJsonSerializer
を使用するように導いてくれるでしょう。
Json.NET ライブラリを使用するだけです。 Json形式の文字列を非常に簡単に解析できます。
JObject o = JObject.Parse(@"
{
""something"":""value"",
""jagged"":
{
""someother"":""value2""
}
}");
string something = (string)o["something"];
私はこれがあなたが望むものだと思う:
JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
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
オブジェクトを取得します
JSON応答をXMLドキュメントに変換できるJson.NETライブラリをエコーします。 XMLドキュメントを使用すると、XPathで簡単にクエリを実行し、必要なデータを抽出できます。これはとても便利だと思います。