提问人:kkeith1723 提问时间:10/27/2023 最后编辑:Brian Tompsett - 汤莱恩kkeith1723 更新时间:10/27/2023 访问量:40
C# 如何将数组中的JSON对象反序列化为列表?
C# How to deserialize JSON objects in an array to a list?
问:
我是 C# 的新手,并试图检索所有数据并转换为列表,以便我可以使用循环进行进一步处理。下面是 JSON 数据:
[
{
"TagNumber": 0001,
"TagName": "Tag1",
"TimeStamp": [
"10/27/2023 14:36:42",
"10/27/2023 14:37:42",
"10/27/2023 14:38:42",
"10/27/2023 14:39:42",
"10/27/2023 14:40:42",
"10/27/2023 14:41:42"
],
"Value": [
0,
0,
0,
0,
0,
0
],
"Confidence": [
100,
100,
100,
100,
100,
100
],
"Sequence": [
0,
0,
0,
0,
0,
0
]
}
]
这是我创建的类,我曾经转换过上面的 JSON,但无法使其工作:JsonConvert.DeserializeObject
public class Response
{
public int TagNumber { get; set; }
public string? TagName { get; set; }
public string? Units { get; set; }
public int Status { get; set; }
public List<Item>? items { get; set; }
}
public class Item
{
public DateTime? TimeStampValue { get; set; }
public int ? Value { get; set; }
public int? ConfidenceValue { get; set; }
public int? SequenceValue { get; set; }
}
这是我的代码:
var result = JsonConvert.DeserializeObject<List<Response>>(responceConetent);
为 null,但其他字段可以正确获取数据。item
有人可以帮我吗?
答:
3赞
David
10/27/2023
#1
您拥有的类与 JSON 中的对象不匹配。它需要匹配,除非你正在编写自定义反序列化程序。
更新类结构以匹配该 JSON:
public class Response
{
public int TagNumber { get; set; }
public string? TagName { get; set; }
public List<DateTime> TimeStamp { get; set; }
public List<int> Value { get; set; }
public List<int> Confidence { get; set; }
public List<int> Sequence { get; set; }
}
请注意,我并不完全相信这些值会反序列化。这可能取决于文化设置。在最坏的情况下,它们可能是字符串:DateTime
public class Response
{
public int TagNumber { get; set; }
public string? TagName { get; set; }
public List<string> TimeStamp { get; set; }
public List<int> Value { get; set; }
public List<int> Confidence { get; set; }
public List<int> Sequence { get; set; }
}
然后,您可以将 转换为另一个模型结构中的 a,以便在代码中使用,从而使整个“反序列化”更像是一个两步过程。除非有一种简单的方法可以让反序列化程序处理这些时间戳的格式。这是一个单独的问题,您可能需要调查,但最坏的情况是,它只是一个两步过程。List<string>
List<DateTime>
评论
items
Item