0

我对动态对象有疑问。这是我的脚本:我在 PostgreSql(版本 13)上有目录。这个表上有一个json类型的字段。这个空间的内部是完全动态的。所以它并不总是具有相同的 json 结构。

我要做的是根据json字段内的动态字段过滤内容。我这样做了。但我不能做的是:我想将此内容发送到我的剃刀视图。在发表这篇文章时,我想将此 json 字段转换为 ac# 对象。换句话说,它应该总是作为一个接受这个 json 的对象返回到 razor 视图,其中包含它的数据。让我举个例子。

Id  |  Title            |  DynamicData
-------------------------------------------------------------------
1   |  Content1         | {"Name": "Serkan", "Surname": "Ateş", Details: { "Job": "Programmer", "Age": 24, IsMale: true, Birthday: "2021-08-29 12:54:37" }}
2   |  Content2         | {"Name": "Halil", "Surname": "Kazan", Details: { "Job": "Teacher", "Age": 32, IsMale: true, Birthday: "2022-08-29 12:54:37" }}
3   |  Content3         | {"SlideName": "Blabla", "Order": 1, "ImagePath": "../Images/Slide1.jpg"}
4   |  Content4         | {"SlideName": "Blabla 2", "Order": 3, "ImagePath": "../Images/Slide2.jpg"}

如您所见,我的“DynamicData”字段的结构是可变的。从该表中提取数据时,如何将 DynamicData 字段转换为对象?该表中也可能有数百条记录。因此,将对象转换为动态对象时,性能对我来说非常重要。根据这张表,如果我只返回 1 和 2 条 Id 记录,我想创建一个这样的类结构并用数据填充它的实例并返回它。


    public class Details
    {
        public string Job { get; set; }
        public int Age { get; set; }
        public bool IsMale { get; set; }
        public string Birthday { get; set; }
    }
    public class Person
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public Details Details { get; set; }
    }
    public class Content
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public Person DynamicData { get; set; }
    }

    var contents = helper.GetContents(...);
    //2 Content type record should be returned

我希望我能够解释我的问题。我试图用 ExpandoObject 来做,但它不太符合我的要求。我想获取我在运行时创建的类的实例,而不是动态地,并将它们作为模型发送到视图。请帮助我:(从现在开始谢谢你。

编辑:

在此处输入图像描述

朋友们,当我尝试用动态类型做我想做的事情时,如果我的动态对象是一个数组,我在循环中访问该数组的元素时无法访问属性。但是当我调试时,如果我直接观看,我可以访问对象的值。这是什么原因?

在此处输入图像描述

4

0 回答 0