【问题标题】:Can I represent my .NET dictionaries as JSON dictionaries in my GraphQL?我可以在我的 GraphQL 中将我的 .NET 字典表示为 JSON 字典吗?
【发布时间】:2019-05-12 23:26:45
【问题描述】:

当我序列化为 JSON 时,我习惯于将 .NET 字典变成对象,其中键作为属性,值作为它们的值。 (The Json.Net docs have a succinct example.)

我正在使用 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 only seems to understand lists,而不是字典。

我没有感觉我正在尝试做的事情是不合理的。让键成为键似乎是正确的,并且是共享这些数据的最有用的方式(例如,suggested by this answer)。

有没有办法在 GraphQL 中做到这一点?有没有办法在 GraphQL .Net 中做到这一点?

【问题讨论】:

    标签: c# .net dictionary graphql graphql-dotnet


    【解决方案1】:

    经过大量研究,这似乎不在 GraphQL 和 is therefore unsupported in GraphQL.Net 的规范中。

    GraphQL 期望预先知道所有可能的属性(即地图/字典中的键)。这意味着我们失去了在运行时传递字典的很多价值。

    所以虽然 GraphQL JSON 比惯用的 JSON 更冗长,但它是故意这样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多