【发布时间】:2020-02-11 20:53:53
【问题描述】:
我有一个具有以下结构的类
class Model
{
public int Id {get;set;}
public Dictionary<string, List<ComplexType>> Values {get;set;}
}
在 Dotnetcore webApi 项目中使用并作为以下对象从我的控制器返回
Ok(new List<Model>() {
new Model{
Id = 1,
Values = new Dictionary<string, List<ComplexType>>() { {"Item1", new List<ComplexType>()} }
} } )
这将产生 Json 输出为:
[
{
"Id": "1"
"Values": {
"Item1": [{}]
}
}
]
所以我的问题是任何可能的方式,将 Dictionary 属性名称带到输出 Json 结构中的更高级别。 基本上在“模型”类中省略属性名称“值”并合并较低的对象,所以它看起来像这样:
[
{
"Id": "1"
"Item1": [{}]
}
]
【问题讨论】:
-
你为什么不一起删除 values 属性,让 Model 成为字典
-
@Steve 这意味着我必须将
Id属性移动到ComplexType中。我需要在同一级别拥有该特定属性,最终获得我需要的 Json 输出 -
实际上你是对的,如果我将
Id添加为 Dictionary 本身的属性,它可以工作。但这也意味着Id应该具有与Item1相同的值类型,因为它应该是int类型,可以使用动态或对象类型等解决方法。如果可能的话,仍然想尝试保留以前的方式
标签: c# json serialization json.net webapi