阅读HttpwebResponse json响应,C#
在我的一个应用程序中,我收到了来自webrequest的回复。 该服务是Restful服务,将返回类似于以下JSON格式的结果:
{ "id" : "1lad07", "text" : "test", "url" : "http:\/\/twitpic.com\/1lacuz", "width" : 220, "height" : 84, "size" : 8722, "type" : "png", "timestamp" : "Wed, 05 May 2010 16:11:48 +0000", "user" : { "id" : 12345, "screen_name" : "twitpicuser" } }
这是我目前的代码:
byte[] bytes = Encoding.GetEncoding(contentEncoding).GetBytes(contents.ToString()); request.ContentLength = bytes.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); using (var twitpicResponse = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) { //What should I do here? } } }
我该如何阅读回复? 我想要url和用户名。
首先你需要一个物体
public class MyObject { public string Id {get;set;} public string Text {get;set;} ... }
然后在这里
using (var twitpicResponse = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) { JavaScriptSerializer js = new JavaScriptSerializer(); var objText = reader.ReadToEnd(); MyObject myojb = (MyObject)js.Deserialize(objText,typeof(MyObject)); } }
我没有使用您拥有的分层对象进行测试,但这可以让您访问所需的属性。
JavaScriptSerializer System.Web.Script.Serialization
我使用RestSharp – https://github.com/restsharp/RestSharp
创建要反序列化的类:
public class MyObject { public string Id { get; set; } public string Text { get; set; } ... }
以及获取该对象的代码:
RestClient client = new RestClient("http://whatever.com"); RestRequest request = new RestRequest("path/to/object"); request.AddParameter("id", "123"); // The above code will make a request URL of // "http://whatever.com/path/to/object?id=123" // You can pick and choose what you need var response = client.Execute(request); MyObject obj = response.Data;
查看http://restsharp.org/即可开始使用。