私のアプリの1つで、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<MyObject>(request);
MyObject obj = response.Data;
http://restsharp.org/ をご覧ください。
コンテンツでソースを取得している場合は、次の方法を使用します
try
{
var response = restClient.Execute<List<EmpModel>>(restRequest);
var jsonContent = response.Content;
var data = JsonConvert.DeserializeObject<List<EmpModel>>(jsonContent);
foreach (EmpModel item in data)
{
listPassingData?.Add(item);
}
}
catch (Exception ex)
{
Console.WriteLine($"Data get mathod problem {ex} ");
}