【发布时间】:2018-07-05 07:09:30
【问题描述】:
收到错误提示
JsonReaderException: 解析值时遇到意外字符:M. Path ', line 0, position 0.
当尝试解析 JSON 响应时(不是全部,而是前几项,我在 xxxxxx 中更改了匿名):
{
"total_count": 1091,
"items": [
{
"hap": "retry_limit_reached",
"message": "Retry limit reached. Dropped: postmaster@xxxxx.ca \u2192 hamnifold@cxxxxxxxxems.com 'REMINDER - Pattison Stampede BBQ (Jul 11, 2018)' No MX for crscranessystems.com Server response: 498 No MX for crscranessystems.com",
"type": "error",
"created_at": "Thu, 05 Jul 2018 06:45:48 GMT",
"message_id": "20180704185046.1.F263522F7F8571FE@mxxxxxx.ca"
},
{
"hap": "tempfailed",
"message": "Will retry in 14400 seconds: postmaster@xxxxxxxx.ca \u2192 conor@xxxxxxxxxy.org 'REMINDER - Pattison Stampede BBQ (Jul 11, 2018)' No MX for greexxxxxxxy.org Server response: 498 No MX for grexxxxxxy.org",
"type": "warn",
"created_at": "Thu, 05 Jul 2018 06:45:17 GMT",
"message_id": "20180704225015.1.E917B878FC275EE7@mxxxxxxx.ca"
},
{
"hap": "opened",
"message": "Opened: jordan@lixxxxxxxxs.com",
"type": "info",
"created_at": "Thu, 05 Jul 2018 06:45:15 GMT",
"message_id": "20180704192612.1.856579D071F84CF8@xxxxxxx.ca"
},
{
"hap": "tempfailed",
"message": "Will retry in 14400 seconds: postmaster@mxxxxxxx.ca \u2192 ccrawford@xxxxxx.com 'SUBJECT' No MX for step-eps.com Server response: 498 No MX for stxxxxxx.com",
"type": "warn",
"created_at": "Thu, 05 Jul 2018 06:45:14 GMT",
"message_id": "20180704225014.1.33D047AC8A685236@xxxxxxxxi.ca"
},
//...
这是我的代码的一部分:
if(response.IsSuccessStatusCode)
{
ViewBag.Msg = "Success";
var stresult = await response.Content.ReadAsStringAsync();
var flogs = JsonConvert.DeserializeObject<List<EmailLog>>(stresult);
logs = flogs.ToList();
}
这是电子邮件日志模型:
public class EmailLog
{
public string hap { get; set; }
public string message { get; set; }
public string type { get; set; }
public string created_at { get; set; }
public string message_id { get; set; }
}
这是我第一次使用 RESTful API 和 JSON,所以我可能会遗漏一些简单的东西。
编辑:
这是我发出 API 请求的完整控制器代码:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://api:key-xxxxxxxxxxxxxxxxxxxxxxxxxxxx@api.mailgun.net/v3");
List<EmailLog> logs = new List<EmailLog>();
HttpResponseMessage response = await client.GetAsync("/mg.xxxxx.ca/log");
if (response.IsSuccessStatusCode)
{
// var stresult = await response.Content.ReadAsStringAsync();
// var flogs = JsonConvert.DeserializeObject<List<EmailLog>>(stresult);
// logs = flogs.ToList();
var json = await response.Content.ReadAsStringAsync();
var jObject = JObject.Parse(json);
if (jObject.ContainsKey("items"))
{
ViewBag.Msg = "Success";
logs = jObject["items"].ToObject<List<EmailLog>>();
}
//var logs = JsonConvert.DeserializeObject<ApiResponse>(json);
}
else { ViewBag.Msg = "Fail"; }
return View(logs);
【问题讨论】:
标签: c# .net json asp.net-core .net-core