我正在尝试使用.net 3.1将JSON反序列化为对象列表



我有以下Json:

{
"Id":"2727",
"Region":"US",
"Data":[
{
"Title":"Director",
"JobDescription":"Coordinates the department activity",
"Department":"HR"
},
{
"Title":"Programmer",
"JobDescription":"Enterprise software developer",
"Department":"FR"
}
]
}

我的格式是这样的:

public class Data
{
public string Title { get; set; }
public string JobDescription { get; set; }
public string Department { get; set; }
}
public class Format
{
public string Id { get; set; }
public string Region { get; set; }
public List<Data> Data {get; set;}
}

我试着这样来描述它:

var  objects = JsonConvert.DeserializeObject<IEnumerable<Format>>(File.ReadAllText("mockJson.json")).ToList();

我得到了这个异常:

类型的未处理异常"Newtonsoft.Json。JsonSerializationException'发生在无法反序列化当前JSON对象(例如:{"name":"value"})输入类型"System.Collections.Generic.IEnumerable"1 (JSONParsingExample.Format)"因为该类型需要一个JSON数组(例如[1,2,3])来反序列化正确。要修复此错误,可以将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其为正常类型.NET类型(例如,不是像整数这样的原始类型,也不是集合)类型(如数组或列表),可以从JSON中反序列化对象。还可以将JsonObjectAttribute添加到类型中以强制使用它从JSON对象反序列化。路径"GlobalOrgId",第2行,位置15。

只是把这个作为一个答案,因为我认为它值得让它更明显。我假设方法调用将有一些问题嵌套列表在json中,但我很高兴看到它的工作。

Format format = JsonConvert.DeserializeObject<Format>(File.ReadAllText("mockJson.json"));

我检查了这些元素,它们似乎都在它们应该在的地方。

请注意,因为JsonConvert.DeserializeObject<T>返回的是T类型的对象,而不是IEnumerable<T>类型的对象。

当在。net中使用JSON时,我建议使用新的内置的东西。

https://devblogs.microsoft.com/dotnet/net-core-image-processing/