我正在使用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;
我是对的吗?
答案 0 :(得分:0)
您必须使用JSON解析器/反序列化器解析响应(即带有JSON的文本字符串)。例如:Json.net
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/bb412179.aspx
WCF有一个DataContractJSONDeserializer。
您需要将类型定义为.net对象,其属性“看起来”像回来的json数据。我不会觉得您实际上在应用程序中使用了WCF,但仍然可以使用DataContractJSONDeserializer。您只需要指示它要反序列化的类型,并且需要使用DataContract属性标记类型。
有更多信息
答案 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类。然后你可以访问你的对象的属性。