【发布时间】:2021-04-12 12:47:24
【问题描述】:
我有以下类,我想通过反序列化 JSON 文件来填充其字段:
public class FirstThreeRandomProperties
{
public List<string> extras1;
public List<string> extras2;
public List<string> extras3;
}
不幸的是,我希望反序列化的 JSON 具有带有变量名的属性。我希望能够反序列化以下 JSON:
{
'unknownName1': [ "A" ],
'unknownName1': [ "A", "B", "C" ]
}
如您所见,属性的名称是随机的,但属性始终是字符串数组。我想将前三个映射到 ThreeExtras 中的变量并丢弃其余的(如果超过三个)。 我希望将其映射到:
{
'extras1': [ "A" ],
'extras2': [ "A", "B", "C" ],
'extras3': null
}
这可能吗?
编辑: FirstThreeRandomProperties 实际上是另一个对象的成员,如下所示:
public class ParentObject
{
// Other properties
public FirstThreeRandomProperties extraProperties;
}
因此,我更喜欢一种解决方案,该解决方案可以轻松地让我用 extraProperties 填充 ParentObject,并按上述方式获取其值。
【问题讨论】:
-
您可以解析到
JTokens 并遍历该树。 -
可以使用相同的密钥吗?如果没有相同的,你可以去查字典和地图
-
@AlexeyRumyantsev 根据我的编辑,您有什么建议如何实施吗?
-
@ChristophLütjen 我喜欢使用 [JsonExtensionData] 的解决方案。出于好奇,我想知道是否可以在不修改FirstThreeRandomProperties的接口的情况下解决这个问题?