当我序列化为JSON时,我习惯于.NET字典成为以键作为属性而值作为其值的对象。 (The Json.Net docs have a succinct example.)
我正在使用GraphQL并努力实现类似的结果。我用于此根查询的数据基本上是catch (HttpResponseException e)
{
string error = e.ToString();
return Content(HttpStatusCode.MethodNotAllowed, error);
}
。到目前为止,我最接近的是:
Dictionary<MyEnum,Dictionary<string,string>>
但我希望它更接近于此:
{
"data": {
"outterDict": [
{
"key": "THING_1",
"innerDict": [
{
"key": "key1",
"val": "val1"
},
...
]
},
{
"key": "THING_2",
"innerDict": [
{
"key": "key2",
"val": "val2"
},
...
]
}
]
}
}
我之所以努力,是因为GraphQL .Net only seems to understand lists,而不是字典。
这不是感觉,就像我想做的是不合理的。将键设置为键似乎是正确的,并且是共享此数据的最有用的方式(例如,以suggested by this answer开头)。
在GraphQL中有没有办法做到这一点?有没有办法在GraphQL .Net 中做到这一点?
答案 0 :(得分:0)
经过大量研究,似乎这不在GraphQL和is therefore unsupported in GraphQL.Net的规范中。
GraphQL希望事先知道所有可能的属性(即地图/词典中的键)。这意味着我们在运行时失去了通过字典的很多价值。
因此,尽管GraphQL JSON比惯用JSON更冗长,但这是故意的。