我以JSON格式獲取響應。我使用jsSerializer從JSON獲取字段的值。它在大部分工作,但我不知道爲什麼在一種情況下回來JSON已在其中\n
,並因此,jsSerializer無法正常工作。在換行符上解析JSON失敗
這是我的代碼:
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);
}
我已經sevaral這些方法正在工作的罰款,唯一不同的是我發現的是(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\": \"[email protected]\"}, {\"unique\": {\"link\": 1}, \"total\": 22, \"recipient\": \"[email protected]\"}]"
如果您的JSON解析器無法處理空白,則可能需要新的JSON解析器。無論如何,你說有一個錯誤 - 它是什麼? – Ryan
錯誤是'System.Collections.Generic.Dictionary .this [string]'的最好的重載方法匹配有一些無效的參數,這是因爲它找不到該feild。 –
Alma