【发布时间】:2020-06-18 11:56:59
【问题描述】:
我想将以下 DTO 发布到 .NET Core API:
{
"Name": "Foo",
"Street": "Bar",
"DynamicInfo": {
"MetadataAsString": "23423",
"MetadataAsInt": 2,
"MetadataAsBool": true,
"SomeOtherValues": "blub"
}
}
我想在 C# 中映射它的类如下所示:
public class Foo
{
public string Name { get; set; }
public string Street { get; set; }
public Dictionary<string, object> DynamicInfo { get; set; }
}
您可以看到我使用了两个静态属性(名称和街道),但我还想发布一些动态数据。
我希望将动态数据写入字典,但不幸的是这不起作用。
我在调试器中得到的结果有点令人困惑:
所以值成功到达,但格式奇怪......我什至不知道如何访问这些值。
如何将其转换为仅包含对象的普通字典?
【问题讨论】:
-
DynamicInfo 列表是否受到某种限制?我的意思是你能不能有一个类 DynamicInfo,它会保存所有不同的可能值并基于类型的序列化?
-
如果您在调试器中有数据(我会说这看起来确实像您的输入数据),那么您确实在字典中有数据。您是否尝试过
myFoo.DynamicInfo["MetadataAsString"],是否得到了一个值为"23423"的字符串对象? -
不...它绝对灵活。
-
@crashmstr:在这种情况下,我得到:“ValueKind = String:”23423“”。而且我仍然不确定这是什么......
-
不只是在调试器中,而是在代码中访问它?另外,你告诉它是“对象”,所以要对它做任何事情,你需要检查它是什么类型,将它用作数字、布尔值或字符串。