如何在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;
我说得对吗?
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"];