JSON 形式で応答が返されます。JSONからフィールドの値を取得するためにjsSerializerを使用しています。ほとんどの部分で機能していますが、ある状況で戻ってくる JSON が\n
含まれている理由がわかりません。このため、jsSerializer は機能していません。
これは私のコードです:
protected void btnStats_Click(object sender, EventArgs e)
{
IRestResponse response = GetStats();//Stats provide you with the summary of the events that occur with your messages.
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
var jsobj = jsSerializer.Deserialize<dynamic>(response.Content);
int total_count= Convert.ToInt32(jsobj[0]["total_count"]); //I am getting error
これは JSON を返すメソッドです。
public static IRestResponse GetStats()
{
RestClient client = new RestClient();
client.BaseUrl = "https://api.mailgun.net/v2";
client.Authenticator =
new HttpBasicAuthenticator("api",
"key");
RestRequest request = new RestRequest();
request.AddParameter("domain",
"messenger.test.com", ParameterType.UrlSegment);
request.Resource = "{domain}/stats";
request.AddParameter("event", "sent");
request.AddParameter("event", "opened");
request.AddParameter("skip", 1);
request.AddParameter("limit", 2);
return client.Execute(request);
}
私は正常に動作しているこれらのメソッドをいくつか持っていますが、私が見つけた唯一の違いは、( response.Content
) にある JSON 形式\n
です 削除するために何もしていません\n
。そこになかっただけです。
これは、そのコードから取得している JSON です。
"{\n \"total_count\": 54,\n \"items\": [\n {\n \"total_count\": 715,\n \"created_at\": \"Mon, 04 Nov 2013 00:00:00 GMT\",\n \"tags\": {},\n \"id\": \"5276e3835b8917d8268a6df1\",\n \"event\": \"opened\"\n },\n {\n \"total_count\": 688,\n \"created_at\": \"Sun, 03 Nov 2013 00:00:00 GMT\",\n \"tags\": {},\n \"id\": \"527592035b8917d8268a1348\",\n \"event\": \"sent\"\n }\n ]\n}"
正常に動作している他の方法では、次のような JSON を取得します。
"[{\"unique\": {\"link\": 1}, \"total\": 35, \"recipient\": \"cutesycanvas@gmail.com\"}, {\"unique\": {\"link\": 1}, \"total\": 22, \"recipient\": \"angelina40d@hotmail.com\"}]"