【发布时间】:2021-09-18 08:37:25
【问题描述】:
我有一种方法可以从 url 反序列化并输出标题让我们说,但我不断收到错误提示
执行请求时发生未处理的异常。 Newtonsoft.Json.JsonSerializationException:无法反序列化 当前 JSON 对象(例如 {"name":"value"})转换为类型 'System.Collections.Generic.List`1[API.Entities.MessageDetail]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 JSON 反序列化的数组或列表等类型 目的。 JsonObjectAttribute 也可以添加到类型中来强制它 从 JSON 对象反序列化。路径“状态”,第 1 行,位置 12。
我的方法是:
WebClient client = new WebClient();
var json_data = client.DownloadString("https:url-to-json.net");
var messagesFromUrl = JsonConvert.DeserializeObject<List<MessageDetail>>(json_data);
foreach(var data in messagesFromUrl )
{
Console.WriteLine(data.Title);
}
return NoContent();
我的模型是:
public class MessageDetail
{
public string Title { get; set; }
public string MessageBody { get; set; }
public string CreateDate { get; set; }
public string CreateBy { get; set; }
public string DeepLinkAction { get; set; }
public int ImportanceLevel { get; set; }
}
public class Content
{
public List<MessageDetail> MessageDetails { get; set; }
}
public class Root
{
public Content Content { get; set; }
}
Json 数据
{
"Status": 200,
"Content": {
"MessageDetails": [
{
"Title": "Emitere Factura",
"MessageBody": "Factura ANB a fost emisa",
"CreateDate": "2020-12-03 16:00:00",
"CreateBy": "System",
"DeepLinkAction": "Open invoice history scren",
"ImportanceLevel": 2
},
{
"Title": "Transmitere index",
"MessageBody": "Sunteti in perioada de autocitire index",
"CreateDate": "2020-12-03 16:00:00",
"CreateBy": "System",
"DeepLinkAction": "Opens the index transmission screen",
"ImportanceLevel": 2
},
{
"Title": "Analiza Apa",
"MessageBody": "S-a transmis raportul de analiza apa pe email.",
"CreateDate": "2020-12-03 16:00:00",
"CreateBy": "System",
"DeepLinkAction": "Download invoice",
"ImportanceLevel": 2
}
]
}
}
【问题讨论】:
-
你能提供 JSON 吗?
-
@Ctznkane525 我编辑了帖子
标签: c# json entity-framework .net-core