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

如何在C#中将SQL Server的FOR JSON AUTO结果转换为模型类

问题:将SQL Server生成的JSON转换为C#模型实例

我在SQL Server中编写了一段查询语句获取表和列信息,通过FOR JSON AUTO生成JSON结果,查询代码如下:

DECLARE @test2 varchar(max) = (

    SELECT DISTINCT
        ba.TABLE_NAME       AS Tabla,
        detalle.COLUMN_NAME AS Columna

    FROM
        INFORMATION_SCHEMA.COLUMNS AS ba
        LEFT JOIN INFORMATION_SCHEMA.COLUMNS AS detalle ON
            detalle.TABLE_NAME = ba.TABLE_NAME

    WHERE
        ba.TABLE_CATALOG = 'tcGenerales'
        AND
        ba.TABLE_NAME NOT IN ( 'Bitacora', 'Version' )

    FOR JSON AUTO
);

SELECT @test2 AS JsonRes;

生成的JSON结果结构如下:

[
   {
      "Tabla": "CA_Asentamiento",
      "Detalle": [
         { "Columna": "Asentamiento" },
         { "Columna": "CodigoPostal" }
      ]
   },
   {
      "Tabla": "CA_ClaveProductoServicio",
      "Detalle": [
         { "Columna": "Clave" },
         { "Columna": "Descripcion" },
         { "Columna": "FechaAlta" }
      ]
   }
]

我已在C#中定义了如下模型类:

public class TablaDTO
{
    public string        Tabla   { get; set; }
    public List<Detalle> Detalle { get; set; }
}

public class Detalle
{
    public string Columna { get; set; }
}

请问如何将上述JSON转换为对应的C#模型类实例?


解决方案

C#中有两种主流的JSON序列化库可以完成这个转换,以下是具体实现步骤:

方式一:使用Newtonsoft.Json(Json.NET)

  1. 通过NuGet安装Newtonsoft.Json包:
    Install-Package Newtonsoft.Json
    
  2. 调用反序列化方法完成转换:
    using Newtonsoft.Json;
    using System.Collections.Generic;
    
    // 替换为从SQL查询获取到的实际JSON字符串
    string jsonString = "...";
    
    List<TablaDTO> tablaList = JsonConvert.DeserializeObject<List<TablaDTO>>(jsonString);
    

方式二:使用System.Text.Json(.NET Core 3.0+/.NET 5+内置)

  1. 无需额外安装包,直接使用内置命名空间:
    using System.Text.Json;
    using System.Collections.Generic;
    
    // 替换为从SQL查询获取到的实际JSON字符串
    string jsonString = "...";
    
    List<TablaDTO> tablaList = JsonSerializer.Deserialize<List<TablaDTO>>(jsonString);
    

注意事项

  • 确保JSON中的键名(Tabla、Detalle、Columna)与C#模型类的属性名完全匹配,System.Text.Json默认大小写敏感,Newtonsoft.Json默认不敏感但建议保持一致。
  • 若JSON可能包含空值,建议给模型类属性设置可空类型或默认值,避免转换时抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:10:54