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





После довольно большого количества исследований кажется, что этого нет в спецификации GraphQL и поэтому не поддерживается в GraphQL.Net.
GraphQL ожидает, что все возможные свойства (например, ключи в карте / словаре) будут известны заранее. Это означает, что мы теряем значимость передачи словаря во время выполнения.
Поэтому, хотя GraphQL JSON более подробен, чем идиоматический JSON, это сделано намеренно.