Могу ли я представить свои словари .NET в виде словарей JSON в моем GraphQL? - PullRequest
0 голосов
/ 12 декабря 2018

Когда я сериализуюсь в 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только кажется, что понимает списки , а не словари.

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

Есть ли способ сделать это в GraphQL?Есть ли способ сделать это в GraphQL .Net ?

1 Ответ

0 голосов
/ 19 декабря 2018

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

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

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

...