【发布时间】:2015-12-12 17:11:24
【问题描述】:
我正在尝试创建一些动态的ExpandoObject。我遇到了某个问题。
由于我不知道我的对象中这些不同属性的名称应该是什么,所以我不能这样做:
var list = new ArrayList();
var obj = new ExpandoObject();
obj.ID = 1,
obj.Product = "Pie",
obj.Days = 1,
obj.QTY = 65
list.Add(obj);
让我解释一下我的情况:我希望从随机数据库中获取数据(我不知道是哪个,但是根据从 UI 获得的信息构建连接字符串),因此我不知道我的数据是什么需要得到。这可能是一个数据库表的例子
餐桌销售
- ID:整数,
- 产品:nvarchar(100),
- 天数:整数,
- 数量:大整数
这可能是另一个例子:
TABLE Foobar
- ID:整数,
- 天数:整数
- 数量:大整数
- Product_Id:int
- Department_Id:int
如您所见,我不知道数据库是什么样的(这是 100% 匿名的,因此它需要是 100% 动态的),并且我想要返回的数据应该看起来像一个构造良好的 JSON,例如所以:
[
{
"ID": 1,
"Product": "Pie"
"Days": 1,
"QTY": 65
},
{
"ID": 2,
"Product": "Melons"
"Days": 5,
"QTY": 12
}
]
或者,用另一个例子:
[
{
"ID": 1,
"Days": 2,
"QTY": 56,
"Product_Id": 5,
"Department_Id": 2
}
{
"ID": 2,
"Days": 6,
"QTY": 12,
"Product_Id": 2,
"Department_Id": 5
}
]
我已经尝试使用这些 ExpandoObjects,但似乎无法使其工作,因为我无法执行此问题顶部所示的操作(我不知道名称的属性)。有没有办法让我说:
var obj = new ExpandoObject();
var propName = "Product";
var obj.propName = "Pie"
Console.WriteLine("Let's print!: " + obj.Product);
//OUTPUT
Let's print!: Pie
有没有人有可能解决这种情况的解决方案,例如对结构的简单指导?
【问题讨论】:
-
您使用什么语言?您标记了 C#,但您的一些代码是 Java(即 System.out.printline) - .NET 没有这个。
-
我没有复制粘贴任何代码。我只是不记得它在 C# 中叫什么。这是纯 C#,仅此而已。我很抱歉。会更正
-
只需创建一个
List<Dictionary<string, object>>。如果您使用Json.NET 将其序列化为 JSON,您将得到您想要的。 -
@GSerg 其中
ExpandoObject是:)
标签: c# json dynamic structure expandoobject