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