我有一个控制器提供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反序列化回List:

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]"

在数组周围标记“。反序列化时,出现以下异常:

将值“ [1,2,3,4]”转换为类型“ System.Collections.Generic.List`1 [System.Int64]”时出错。 路径'',第1行,位置11。

有什么建议么 ?

===============>>#1 票数:2 已采纳

JsonConvert.SerializeObject方法将您的数字列表转换为JSON 字符串,并且您将从操作方法返回该字符串。 因此,基本上,您的输出实际上不是数字的json数组,而是这样的字符串

"[1,2,3,4]"

您应该只使用Json方法即可返回正确的json数组

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

此方法应返回这样的响应

[1,2,3,4]

通过此响应,您的其他客户端代码应该能够正确地反序列化为数字列表

  ask by BrilBroeder translate from so

未解决问题?本站智能推荐: