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

本文关键字:格式 json 返回 数据 | 更新日期: 2023-09-27 18:23:52

我使用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;

我说得对吗?

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

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

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

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

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

您几乎总是可以使用JavaScriptSerializer类。这方面会有很多变化,我已经在其他答案中看到了建议,尽管这可能已经足够了。也就是说,您需要研究Deserialize<T>方法,其签名为:

public T Deserialize<T>(
  string input
)

如果适合的话,一个优点是它是System.Web.Extension中一个现成的类,并且消除了对"第三方组件"的要求。

其中一种可能性是使用JObject实例。YOu可以给它传递一个字符串,然后很容易地提取值:

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