You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON转C#类并存入数据库时遇反序列化错误求助

解决JSON数组反序列化为C#对象的错误及数据库存储方案

嘿,我一眼就看出问题所在啦!你遇到的反序列化错误,核心原因是你的JSON数据是数组格式(包含多个Rootobject类型的对象),但你却尝试把它反序列化成单个Rootobject实例——这就像要把一筐苹果塞进一个苹果的包装盒里,肯定行不通呀。

下面一步步帮你解决问题:

1. 修正反序列化代码

把反序列化的目标类型从单个Rootobject改成List<Rootobject>,这样才能匹配JSON数组的结构:

// 替换原来的单个对象反序列化代码
List<Rootobject> raList = JsonConvert.DeserializeObject<List<Rootobject>>(json);

2. 修复JSON格式问题

你提供的JSON片段外层缺少数组的方括号[],而且第二个对象的xyz5后面多了个多余的逗号,这都会导致反序列化失败。修正后的正确JSON应该是这样的:

[
  {
   "qqq": "xxxx",
   "rrrr": "xxxxx",
   "abc": {
    "abc1": "xxxxx",
    "abc2": "xxxxx",
    "abc3": "xxxxx",
    "abc4": "xxxxx",
    "abc5": "2018-05-28T06:10:00.000"
   },
   "xyz": {
    "xyz1": "xxxxx",
    "xyz2": "xxxxx",
    "xyz3": "xxxxx",
    "xyz4": "xxxxx",
    "xyz5": "2018-05-28T07:30:00.000"
   }
  },
  {
   "qqq": "xxxxx",
   "rrrr": "xxxxx",
   "abc": {
    "abc1": "xxxxx",
    "abc2": "xxxxx",
    "abc3": "xxxxx",
    "abc4": "xxxxx",
    "abc5": "2018-05-28T06:10:00.000"
   },
   "xyz": {
    "xyz1": "xxxxx",
    "xyz2": "xxxxx",
    "xyz3": "xxxxx",
    "xyz4": "xxxxx",
    "xyz5": "2018-05-28T07:30:00.000"
   }
  }
]

3. 将数据存储到数据库

这里用Entity Framework Core举个简单的批量存储例子,如果你用其他框架(比如ADO.NET)逻辑类似:

第一步:定义DbContext

public class AppDbContext : DbContext
{
    // 对应数据库中的表
    public DbSet<Rootobject> RootObjects { get; set; }
    public DbSet<Abc> Abcs { get; set; }
    public DbSet<Xyz> Xyzs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // 替换成你的数据库连接字符串
        optionsBuilder.UseSqlServer("Server=你的服务器;Database=你的数据库;Trusted_Connection=True;");
    }
}

第二步:批量存储数据

using (var context = new AppDbContext())
{
    // 把反序列化得到的所有对象批量添加到上下文
    context.RootObjects.AddRange(raList);
    // 提交更改到数据库
    context.SaveChanges();
}

注意:如果希望Abc和Xyz作为Rootobject的关联数据自动存储,需要确保实体类配置了正确的导航关系(比如用[ForeignKey]特性或者Fluent API),避免出现数据缺失的情况。

内容的提问来源于stack exchange,提问作者raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:50:56