json反序列化为选择类

24 浏览
0 Comments

json反序列化为选择类

我有一个问题,如何更好地解决它。

我有一个包含JSON的字符串,想要将其转换为类。

我知道可以使用以下代码:

var json = JsonConvert.DeserializeObject(stringJson);

问题在于我有几个类,不知道如何优雅地选择应该使用哪个类。

我知道一种方法,但我认为它很糟糕。例如:

try
{
    var json = JsonConvert.DeserializeObject(stringJson);
}
catch()
{}
try
{
    var json = JsonConvert.DeserializeObject(stringJson);
}
catch()
{}

还有其他方法吗?

编辑:

我有8-10个不同版本的结果,对于每个版本,我都知道它的结构(版本数量可能会变化)。

0
0 Comments

问题的出现原因是:当我们需要将JSON字符串反序列化为不同的类时,根据JSON中的某些特定属性来选择要反序列化的类。

解决方法是:可以使用JObject解析JSON字符串,并根据自己的规则选择要反序列化的确切类型。可以利用LINQ和其他高级技巧来实现。例如,可以使用switch语句根据"type"属性的值来选择要反序列化的类。通过解析JObject并使用JsonConvert.DeserializeObject方法,可以将JSON的"data"属性的值反序列化为相应的类。

如果无法控制JSON格式,可以使用其他证据来确定要反序列化的确切类型。

0
0 Comments

问题出现的原因是在进行JSON反序列化时,无法确定要将JSON数据转换成哪个类的实例。解决方法有以下几种:

方法1:

在反序列化时,将JSON数据转换成JObject对象,并在JObject对象中使用switch语句根据"type"字段的值选择相应的类进行处理。

方法2:

同样是先将JSON数据转换成JObject对象,然后使用ToObject方法获取JObject对象的类型,并根据类型的名称进行选择。

方法3:

可以通过继承基类的方式,定义多个类来处理不同类型的JSON数据。定义一个基类MyClass,然后分别定义MyClass1、MyClass2等子类,根据JSON数据的"type"字段的值选择相应的子类进行处理。

以上是对原文中的内容进行整理得到的解决方法。根据问题描述来看,可能会遇到一些异常情况,具体原因需要进一步分析。

0