C#でJSONを解析するにはどうすればいいですか?

以下のようなコードがあります。

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);

responsecontent`の入力はJSONですが、適切にパースされてオブジェクトになっていません。どのようにすれば適切にデシリアライズできますか?

私は、あなたがJson.NET(Newtonsoft.Json NuGetパッケージ)を使用していないと仮定しています。もしそうであれば、試してみてください。

以下のような機能があります。

1.LINQ to JSON 2..NETオブジェクトをJSONに素早く変換して戻すJsonSerializer 3.Json.NETは、オプションで、デバッグや表示のために整形され、インデントされたJSONを作成することができます。 4.JsonIgnoreやJsonPropertyなどの属性をクラスに追加して、クラスのシリアライズ方法をカスタマイズすることができます。 5.JSONをXMLとの間で変換する機能 6..NET、Silverlight、Compact Frameworkなどのマルチプラットフォームに対応

以下のを見てください。この例では、JsonConvertクラスを使用して、オブジェクトをJSONとの間で変換しています。このクラスには2つの静的メソッドがあります。それらは[SerializeObject(Object obj)][3]とDeserializeObject(String json)です。

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject(json);

[3]: http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_JsonConvert_SerializeObject.htm

解説 (12)

もし、.NET 4が利用できるなら、チェックしてみてください。http://visitmix.com/writings/the-rise-of-json (archive.org)をご覧ください。

そのサイトからのスニペットを紹介します。

WebClient webClient = new WebClient();
dynamic result = JsonValue.Parse(webClient.DownloadString("https://api.foursquare.com/v2/users/self?oauth_token=XXXXXXX"));
Console.WriteLine(result.response.user.firstName);

最後のConsole.WriteLineはとても素晴らしいですね。

解説 (3)

また、DataContractJsonSerializerも参考にしてみてください。

解説 (2)