Могу ли я представить свои словари.NET в виде словарей JSON в моем GraphQL?

Когда я сериализуюсь в 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 ответ

Решение

После большого количества исследований кажется, что это не относится к спецификации GraphQL и поэтому не поддерживается в GraphQL.Net.

GraphQL ожидает, что все возможные свойства (т.е. ключи в карте / словаре) будут известны заранее. Это означает, что мы теряем значимость передачи словаря во время выполнения.

Таким образом, хотя GraphQL JSON более многословен, чем идиоматический JSON, это так намеренно.

Другие вопросы по тегам