我在从JSON字符串反序列化数据时遇到了麻烦:
[{
"Example A": [{
"Parameter1": "Example A",
"Parameter2": "aaa",
"Parameter3": "2022-06-30 21:15:00.0000000",
"Value": 11.11
}
],
"Example B": [{
"Parameter1": "Example B",
"Parameter2": "ccc",
"Parameter3": "2022-06-30 21:15:00.0000000",
"Value": 33.33
}
],
"Example C": [
{
"Parameter1": "Example C",
"Parameter2": "eee",
"TimestampUTC": "2022-06-30 21:15:00.0000000",
"Value": null
},
{
"Parameter1": "Example C",
"Parameter2": "fff",
"Parameter3": "2022-06-30 21:15:00.0000000",
"Value": 44.44
}
]
}]
我试过的是:
public class ExampleA
{
public string Parameter1 { get; set; }
public string Parameter2 { get; set; }
public string Parameter3 { get; set; }
public double Value { get; set; }
}
public class ExampleB
{
public string Parameter1 { get; set; }
public string Parameter2 { get; set; }
public string Parameter3 { get; set; }
public double Value { get; set; }
}
public class ExampleC
{
public string Parameter1 { get; set; }
public string Parameter2 { get; set; }
public string Parameter3 { get; set; }
public double Value { get; set; }
}
public class Examples
{
[JsonProperty("Example A")]
public List<ExampleA> ExampleA { get; set; }
[JsonProperty("Example B")]
public List<ExampleB> ExampleB { get; set; }
[JsonProperty("Example C")]
public List<ExampleC> ExampleC { get; set; }
}
但是当我试着用这个来测试它时:
Examples someVar = JsonConvert.DeserializeObject<Examples>(JsonString);
Console.WriteLine(SomeVar.ExampleA.Count);
我得到这个错误:
未处理的例外。JSON . jsonserializationexception:无法将当前JSON数组(例如[1,2,3])反序列化为MyProject类型。例子,因为需要一个JSON对象类型(例如:{"name"value")反序列化正确。
要修复此错误,要么将JSON更改为JSON对象(例如{"name":"value"}),要么将反序列化类型更改为数组或实现集合接口的类型(例如ICollection, IList),如List
<T>
,可以从JSON数组反序列化。JsonArrayAttribute也可以添加到该类型中,以强制它从JSON数组反序列化。
显然我很难理解反序列化是如何工作的——我想做的是这样的:
foreach item in Example
// do something
foreach thing in item
// do something more
我意识到在这种情况下,我在掌握JSON格式时遇到了一些麻烦。
我用的是。net Core。
你的json中有一个数组试试这个
List<Examples> someVar = JsonConvert.DeserializeObject<List<Examples>>(JsonString);