C#如何正确填充List集合 生成符合指定结构的JSON数据
问题原因及修正方案
核心错误点
- 类型不匹配:
MyRootClass的AA、BB属性均为List<>集合类型,原有代码直接赋值单个类对象,不符合类型要求 - 类型转换错误:
AAClass的value属性为DateTime类型,不能直接传入字符串,需要显式转换为DateTime类型 - 容器定义错误:你期望的JSON结构是单个
MyRootClass对象,而非MyRootClass集合,不需要声明List<MyRootClass>类型的myData
正确代码实现
void Main() { // 直接声明单个MyRootClass对象即可匹配你需要的JSON结构 var myData = new MyRootClass() { AA = new List<AAClass>() { new AAClass { ts = 1636862399574, value = DateTime.Parse("2021-11-14 00:57:25.049983") }, new AAClass { ts = 1636862398995, value = DateTime.Parse("2021-11-14 00:57:24.049979") } }, BB = new List<BBClass>() { new BBClass { ts = 1636862399574, value = "16183.8" }, new BBClass { ts = 1636862398995, value = "16250.8" } } }; // 如果你确实需要List<MyRootClass>类型的变量,可以按以下方式添加 // var myDataList = new List<MyRootClass>(); // myDataList.Add(myData); }
额外说明
使用System.Text.Json或者Newtonsoft.Json序列化上述myData对象,输出结果会完全匹配你提供的JSON结构,序列化时会自动把DateTime类型的value属性转为你需要的字符串格式,如果你需要自定义日期格式,可以在序列化配置中指定DateFormatString参数。
内容的提问来源于stack exchange,提问作者ingezone
相关产品推荐
相关产品推荐

