【发布时间】:2021-06-26 09:26:07
【问题描述】:
我将一个 json 文件反序列化为 C# 对象,在本例中为 MTG 卡(来自 scryfall.com 的 json)。以前我用 MSSQL 解决了这个问题;我使用 OPENJSON 将 json 数据导入数据库,将我需要的每个元素映射到具有正确名称的列,然后创建一个新的 json 文件,其属性与我在应用程序中所需的类匹配。 对于像 arena_id 这样只有一个值的属性,或者对于用作字符串 (color_identity) 的数组,这不是问题,但是对于像 card_faces(有 2 个可玩面的卡片)这样的数组,我必须指定我要导入的数组。
arena_id int '$.arena_id',
...
[color_identity] nvarchar(max) AS JSON,
...
name_front varchar(100) '$.card_faces[0].name',
mana_cost_front varchar(30) '$.card_faces[0].mana_cost',
name_back varchar(100) '$.card_faces[1].name',
mana_cost_back varchar(30) '$.card_faces[1].mana_cost',
从定制的 SQL 文件中,我相应地反序列化了每个对象,但现在我尝试在没有 SQL 的情况下执行此操作,并且更直接地影响去往何处。 如前所述,对于不需要解构的属性,我知道我可以在类中选择相同的属性名称,并且很容易被接受。我的问题是数组属性,我应该将其划分为具有不同名称的单独属性。 是否可以在 C# 中以类似的方式反序列化? 我很感谢各种提示和技巧,因为我对编程还比较陌生,只有一年的培训课程。
【问题讨论】:
标签: c# sql arrays json deserialization