JSON 将长数组反序列化为列表<long> 不工作

JSON deserialize array of long to list<long> not working

我有一个控制器给出 JSON 作为响应。

public ActionResult Messages()
{
   var Ids = new List<long>() { 1,2,3,4 };
   var data = JsonConvert.SerializeObject(Ids);
   return Json(data, JsonRequestBehavior.AllowGet);
}

此 JSON 得到响应的结果:

[1,2,3,4]

在客户端,我正在尝试使用 :

将 JSON 反序列化回列表
using (_HttpResponse = client.SendAsync(_HttpRequest).Result)
{
    _HttpResponse.EnsureSuccessStatusCode();
    var _ResponseContent = await _HttpResponse.Content.ReadAsStringAsync();
    var Ids = JsonConvert.DeserializeObject<List<long>>(_ResponseContent);
}

_ResponseContent 变为:

"[1,2,3,4]"

标记数组周围的 "。 在反序列化时,我得到以下异常:

Error converting value "[1,2,3,4]" to type 'System.Collections.Generic.List`1[System.Int64]'. Path '', line 1, position 11.

有什么建议吗?

JsonConvert.SerializeObject 方法将您的数字列表转换为 JSON 字符串 并且您正在 return 从您的操作方法中获取该字符串.所以基本上你的输出并不是真正的 json 数字数组,而是像这样的字符串

"[1,2,3,4]"

您应该简单地使用 Json 方法,该方法 return 是正确的 json 数组

public ActionResult Messages()
{
    var Ids = new List<long>() { 1, 2, 3, 4 };
    return Json(Ids, JsonRequestBehavior.AllowGet);
}

此方法应该return这样的响应

[1,2,3,4]

有了这个响应,您的其他客户端代码应该能够正确地将其反序列化为数字列表