我想使用ODataMediaTypeFormatter进行serialaze Dictionary im模型。
JsonNet将字典序列化为对象:
{
Length: 10,
Weight: 100,
}
ODataMediaTypeFormatter(使用ODataJsonLight序列化程序)序列化为空数组:
[
{},
{}
]
ODataMediaTypeFormatter将字典序列化为KeyValuePair和KeyValuePair的集合作为空对象。
我尝试覆盖默认格式化程序并使用参数将Dictionary转换为ComplexType,但我在ODataJsonLight序列化程序中有Edm验证错误(它是Microsoft.Data.Edm的一部分)。
有没有人有任何想法如何序列化字典?
答案 0 :(得分:1)
字典不是OData中的标准数据类型。因此,Web API OData不支持原生。然而,您可以将它们建模为keyvalue对(复杂类型)的集合,但我建议您为此声明一个特殊类型。
无论如何,建模代码将是(假设你有Dictionary<string,string>
),
Type kvpType = typeof(KeyValuePair<string, string>);
var kvpEdmType = builder.AddComplexType(kvpType);
kvpEdmType.AddProperty(kvpType.GetProperty("Key"));
kvpEdmType.AddProperty(kvpType.GetProperty("Value"));