如何在c#中使用json格式的返回数据?

时间:2012-02-08 15:37:33

标签: c# json

我正在使用HttpWebRequest方法从特定的URL“获取”返回的数据应该是json格式的数据。我的代码就像

  WebRequest request = WebRequest.Create("https://xxx.xxxxxxxx.com/xxxxxxx");
    request.Method = "GET";
    request.ContentType = "application/json";
    var response = (HttpWebResponse)request.GetResponse();
    using (var streamReader = new StreamReader(response.GetResponseStream()))
    {
        var responseText = streamReader.ReadToEnd();

    }

我观察到的responseText值是

 [
 {
 "webinarKey":5303085652037254656,
 "subject":"Test+Webinar+One",
 "description":"Test+Webinar+One+Description",
 "organizerKey":73563532324,
 "times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
 },
 {
 "webinarKey":9068582024170238208,
 "name":"Test+Webinar+Two",
 "description":"Test Webinar Two Description",
 "organizerKey":73563532324,
 "times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
 }
 ]

你可以看到它是json格式,但我不知道如何将它设置为json对象,所以我可以得到它的字段值,如

string webinarKey=responseText[0].webinarKey;

我是对的吗?

5 个答案:

答案 0 :(得分:0)

您必须使用JSON解析器/反序列化器解析响应(即带有JSON的文本字符串)。例如:Json.net

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/bb412179.aspx

WCF有一个DataContractJSONDeserializer。

您需要将类型定义为.net对象,其属性“看起来”像回来的json数据。我不会觉得您实际上在应用程序中使用了WCF,但仍然可以使用DataContractJSONDeserializer。您只需要指示它要反序列化的类型,并且需要使用DataContract属性标记类型。

有更多信息

http://msdn.microsoft.com/en-us/library/bb412170.aspx

答案 2 :(得分:0)

您几乎可以随时使用JavaScriptSerializer课程。这将有很多变化,我可以在其他答案中看到建议,尽管这可能就足够了。也就是说,您需要查看Deserialize<T>方法,签名为:

public T Deserialize<T>(
  string input
)

如果这适合的话,一个优点是它是System.Web.Extension中一个随时可用的类,并且不再需要“第三方组件”。

答案 3 :(得分:0)

一种可能性是使用JObject instance。你可以传递一个字符串,然后轻松提取值:

JObject jobj = JObject.Parse(resultString);
someValue = jobj[0]["webinarKey"];

答案 4 :(得分:0)

JavaScriptSerializer ser = new JavaScriptSerializer();
MyClass package = null;   
package = ser.Deserialize<MyClass>(item);

其中item是您的响应文本,MyClass是您要返回的.net类。然后你可以访问你的对象的属性。