[C#] Wie kann ich JSON mit C # analysieren?


Answers

Wie wurde hier beantwortet - JSON in C # dynamisches Objekt deserialisieren?

Es ist ziemlich einfach mit Json.NET:

dynamic stuff = JsonConvert.DeserializeObject("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");

string name = stuff.Name;
string address = stuff.Address.City;

Oder mit Newtonsoft.Json.Linq:

dynamic stuff = JObject.Parse("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");

string name = stuff.Name;
string address = stuff.Address.City;
Question

Ich habe den folgenden Code:

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

Die Eingabe in responsecontent ist JSON, aber es wird nicht ordnungsgemäß in ein Objekt geparst. Wie sollte ich es richtig deserialisieren?




var result = controller.ActioName(objParams);
IDictionary<string, object> data = (IDictionary<string, object>)new System.Web.Routing.RouteValueDictionary(result.Data);
Assert.AreEqual("Table already exists.", data["Message"]);



Wenn .NET 4 für Sie verfügbar ist, besuchen Sie: http://visitmix.com/writings/the-rise-of-json (archive.org)

Hier ist ein Ausschnitt von dieser Seite:

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);

Das letzte Console.WriteLine ist ziemlich süß ...




Probieren Sie den folgenden Code aus:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL");

            JArray array = new JArray();
            using (var twitpicResponse = (HttpWebResponse)request.GetResponse())
            {

                using (var reader = new StreamReader(twitpicResponse.GetResponseStream()))
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    var objText = reader.ReadToEnd();

                    JObject joResponse = JObject.Parse(objText);
                    JObject result = (JObject)joResponse["result"];
                    array = (JArray)result["Detail"];
                    string statu = array[0]["dlrStat"].ToString();
                }

            }