我有这个Json对象:
{
"Sheet1": [
{
"one": 1,
"two": 18
},
{
"one": 16,
"two": 33
},
{
"one": 17,
"two": 34
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下模型反序列化它:
public class Sheets
{
[JsonProperty("Sheet1")]
public Sheet Sheet { get; set; }
}
public class Sheet
{
public List<Row> Rows { get; set; }
}
public class Row
{
[JsonProperty("one")]
public string Col1 { get; set; }
[JsonProperty("two")]
public string Col2 { get; set; }
}
var res = JsonConvert.DeserializeObject<Sheets>(result);
Run Code Online (Sandbox Code Playgroud)
但我得到这个例外:
Newtonsoft.Json.dll中发生了类型为'Newtonsoft.Json.JsonSerializationException'的未处理异常
附加信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型'ExcelConsoleApp.Sheet',因为该类型需要JSON对象(例如{“ name”:“ value”})才能正确反序列化。
我究竟做错了什么?有什么想法吗?
编辑
一种可能的解决方案是使用
dynamic dynamicObject = JsonConvert.DeserializeObject(result);
Run Code Online (Sandbox Code Playgroud)
但我想直接将其反序列化到模型中。
Sheet1不是Sheet 类型,而是Rows 列表。这可以通过括号来识别。
即,这是Collection"Sheet1": [的明确标志,而不是由 标识的对象。{
将工作表更改为以下内容:
public class Sheets
{
[JsonProperty("Sheet1")]
public List<Row> Sheet { get; set; }
}
Run Code Online (Sandbox Code Playgroud)