能否在GraphQL中将.NET字典表示为JSON字典?

4
当我将数据序列化为JSON时,我习惯于.NET字典变成具有键作为属性和值作为其值的对象。(Json.Net文档提供了一个简洁的示例。)
我正在使用GraphQL,并且难以实现类似的结果。我的根查询的数据基本上是一个Dictionary<MyEnum,Dictionary<string,string>>。到目前为止,我得到的最接近的结果是这样的:
{
  "data": {
    "outterDict": [
      {
        "key": "THING_1",
        "innerDict": [
          {
            "key": "key1",
            "val": "val1"
          },
          ...
        ]
      },
      {
        "key": "THING_2",
        "innerDict": [
          {
            "key": "key2",
            "val": "val2"
          },
          ...
        ]
      }
    ]
  }
}

但我希望它更接近这样:
{
  "data": {
    "collection": {
      "THING_1": {
        "key1": "val1",
        ...
      },
      "THING_2": {
        "key2": "val2",
        ...
      }
    }
  }
}

我在苦恼,因为GraphQL .Net只能理解列表,而不能理解字典。
这似乎并不是我尝试做的事情不合理。让键作为键似乎是正确的,也是共享此数据的最有用的方法(例如这个答案建议的方式)。
在GraphQL中有没有这样的方法?在GraphQL .Net中有没有这样的方法?
1个回答

2
经过相当多的研究,似乎这不在 GraphQL 的规范之内,因此在 GraphQL.Net 中不支持
GraphQL 期望所有可能的属性(即地图/字典中的键)在预先知道。这意味着我们失去了在运行时传递字典的很多价值。
因此,尽管 GraphQL JSON 比惯用的 JSON 更冗长,但它是故意这样的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接