C# 如何将数据表作为json从.net core 5.0 web api传递到角度前端?

C# 如何将数据表作为json从.net core 5.0 web api传递到角度前端?,c#,json,sql-server,angular,.net-5,C#,Json,Sql Server,Angular,.net 5,我以前的.net core 2 web api项目使用newtonsoft将一个数据表序列化为json,然后我将其作为json ie传回前端(angular)站点: 创建函数iepublic IActionResult Countries\u Get(),查询sql server数据库并填充新的sql数据表iedatatable dtCountries=clsDB。执行到数据表(“selCountries”,lstDBParams,Request) 使用HTTPStatusCode从函数返回da

我以前的.net core 2 web api项目使用newtonsoft将一个数据表序列化为json,然后我将其作为json ie传回前端(angular)站点:

  • 创建函数ie
    public IActionResult Countries\u Get()
    ,查询sql server数据库并填充新的sql数据表ie
    datatable dtCountries=clsDB。执行到数据表(“selCountries”,lstDBParams,Request)
  • 使用HTTPStatusCode从函数返回datatable,如Ok ie
    Return Ok(dtCountries)
  • 上面的代码不再适用于.net 5.0项目(重新启动),错误为
    System.NotSupportedException:“System.Type”实例的序列化和反序列化不受支持,应避免使用,因为它们可能导致安全问题。路径:$.Columns.DataType.

    我读到这是微软设计的,因为使用新的System.Text.Json名称空间是不安全的,我真的很想以正确的方式继续进行,但经过数小时的搜索,我还没有找到答案

    有人能告诉我如何做上述与原始应用程序相同的事情吗


    干杯

    您似乎希望直接返回数据表作为结果。事实上,这可能导致安全问题

    您是否尝试过进行中间映射


    将您的DataTable属性放入一个新类,然后返回这个新类。

    如果可以,我强烈建议您不要使用
    DataTable
    ,它们现在是非常古老的技术,而且有很多更好的选择。但是,如果您陷入困境,您可以让您的项目使用Newtonsoft而不是新的System.Text.Json名称空间(如中所述)来完成它。感谢@DavidG的输入,我对web开发还是相当陌生的,因此可能从一开始就没有用web api正确地完成工作。如果我要离开datatables,你会建议哪条路线?…正如前面提到的,这个项目是一个更大的项目,因此我想用正确的方法,而不是快速的方法。DataTable只是一种现在很少使用的遗留技术。更常见的是使用普通C#类来保存对象。关于如何查询数据库并返回JSON(通常使用类似于ORM的实体框架)的教程数不胜数。好的,我将尝试一下,看看这是否解决了问题,并为我指明了前进的方向。Cheers Hanks@AtomikD3sign我最初的项目是我第一次尝试一个角度站点,我在去的过程中了解到了这一点,因此我倾向于采用相同的方法在api和前端之间检索和传递数据,即运行查询获取数据,用结果填充数据表,然后直接将数据传递回角度前端,因此,这可能不是最好的办法。至于中间映射…我不知道从何处开始,使用我的上述方法可能会导致大量代码更改,以不同的方式进行。ie为我想要返回的每种类型的对象创建一个新类。