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]
有了这个响应,您的其他客户端代码应该能够正确地将其反序列化为数字列表
我有一个控制器给出 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]
有了这个响应,您的其他客户端代码应该能够正确地将其反序列化为数字列表